Datentypen Casts bei Listelementtypen

chriis

Aktives Mitglied
Hallo,
Ich habe eine ClientApp die im moment meine ServerApp inkludiert, weil sie gemeinsame Klassen haben. Nun wollte ich die beiden Anwendungen trennen und hab dafür bei den gemeinsamen Klassen Interfaces implementiert, die ich dann der ClientApp zur verfügung stelle. Nun hab ich das Problem, dass sich die Listen nicht casten lassen. Also in Zeile 5 sagt mir Eclipse dass es nicht von Set<Request> in Set<IRequest> umwandeln kann. Gibts dafür ne Lösung oder mache ich was falsch?

Java:
public class Mandant implements IMandant{
  private Set<Request> requests;

  public Set<IRequest> getRequestList() {
    return requests;
  }
}
Java:
public class Request implements IRequest {
  [..]
}
Java:
public interface IMandant {
  public Set<IRequest> getRequestList();
}
 
M

maki

Gast
Was ich nicht verstehe ist, warum man die Interfaces nicht konsequent nutzen sollte?
Code:
private Set<IRequest> requests;
 

Landei

Top Contributor
Das muss so sein. Überlege mal selbst:
Java:
List<String> strings = new ArrayList<String>();
//Angenommen, das folgende würde funktioneren...
List<CharSequence> chars = (List<CharSequence>) strings; 
//Dann könnten wir auch andere SubTypen in unsere Liste schreiben:
chars.add(new StringBuilder()); //StringBuilder sind CharSequences

//Und soll jetzt die gute Fee den StringBuilder in einen String umwandeln?
for(String s : strings) {
   ...      
}

In deinem Beispiel kannst du schreiben:
Java:
  public Set<IRequest> getRequestList() {
    return new HashSet<IRequest>(requests);
  }
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben