SpezialProfiProblem

reibi

Top Contributor
...geiXer Titel nich ;-)

Hab folgenden selbsterstellten Quelltext, der selber was aussagt :

Java:
public interface Phase<E>{
    public void init();
    public List<E> initList();
    public void run(E obj);
} // end Phase

OK ..soweit

ich kann beispielsweise das hier sagen:
Java:
    public List<?> initList();

aber nicht das hier:
Java:
    public void run(? obj);


klaro ...ja?


Also mein Ziel ist, dass beide Typen nicht definiert sein müssen, aber sichergestellt sein soll, das es der gleiche Typ bei beiden ist.

ok... das macht das was ganz oben steht...klaro ;-)


aber ich will das "<E>" hier weghaben:
Java:
public interface Phase<E>{

geht das irgendwie, bei gleicher oder ähnlicher Funktionalität?

Grusslinger ;-)
 

The_S

Top Contributor
Du kannst zwar einen generischen Typen auch an einer Methode definieren, der gilt dann aber auch nur für diese Methode. Warum stört dich denn der generische Typ an der Klasse? Möchtest du mit einer Instanz die Methoden für unterschiedliche "Es" aufrufen? Wie soll das funktionieren? Beim ersten Aufruf von initList bzw. run wird E festgelegt? Bei jedem Aufruf neu?
 

reibi

Top Contributor
Warum stört dich denn der generische Typ an der Klasse?
Also Du meinst am Interface.
Und zwar stört der mich, weil ich das beim Implementieren in ner Klasse mit angeben muss:

Möchtest du mit einer Instanz die Methoden für unterschiedliche "Es" aufrufen?
Nein! das möchte ich eben nicht! Es sollen die gleichen "Es"(der gleiche Typ) sein.




Java:
public class Test implements Phase<Integer>
das was oben incl der spitzen Klammern steht hab ich keinen Bock drauf.

Die Frage ist: Was ist E?

Haben alle Es ein gemeinsames Interface/Klasse?
E ist generisch. Es kann "Integer", "Object" oder ne eigene Klasse sein.

Gruss ;-)
 

reibi

Top Contributor
Geht nicht : ich sehs ja schon ein:

Hier muss ichs ja auch angeben:
Java:
public class TestColli<E> implements Collection<E>{...}

Gruss an alle ;-)
 
M

maki

Gast
Vielleciht reicht dir anstatt
Code:
public class TestColli<E> implements Collection<E>{...}
schon
Code:
public class TestColli implements Collection<E>{...}
zB. falls TestColli nicht generisch sein soll :)
 

reibi

Top Contributor
klaro : reicht mir .. muss aber trotzdem dem zu implementierenden Interface was mitgeben, egal ob es generisch "<E>" oder konkret "<Integer>" sein soll.

Nun gut, so isses aber --> nich zu ändern ;-)
 

Neue Themen


Oben