I StringMap Klasse verwenden, wie unten Map Erklärung zu vereinfachen:Erste in der Karte von Generika befreien
public interface StringMap extends Map<String, String> {
interface Entry extends java.util.Map.Entry<String, String>{
}
}
public class StringHashMap extends HashMap<String, String> implements StringMap{
}
Das Problem ist, dass ich nicht StringMap.Entry die gleiche Art und Weise wie StringMap arbeiten. Wenn ich dies tun:
StringMap strings = new StringHashMap(); // this works perfectly fine
for (StringMap.Entry entry : strings.entrySet()) { // this doesn't work
}
ich diesen Fehler:
Error:(402, 49) java: incompatible types: java.util.Map.Entry<java.lang.String,java.lang.String> cannot be converted to com.nicksoft.nslib.StringMap.Entry
Gibt es eine Möglichkeit, um es?
Edit:
Ich beginne zu realisieren dies nicht möglich ist. Zumindest ist es mit vertretbarem Aufwand nicht möglich. Ich denke, wenn es wäre, hätte ich jemanden gefunden, der es macht. Aber wenn jemand Tricks hat, die Code lesbarer machen können - lassen Sie es mich wissen.
Ich glaube, das würde kategorisieren als [die Pseudo-Typdef Antipattern] (http://www.ibm.com/developerworks/java/library/j-jtp02216/index.html) –
Dann möchte ich wirklich das implementieren Antipattern. Ich interessiere mich nicht für Designmuster. Vielen Dank für Ihren Besuch und Ihre Meinung. – NickSoft
@JornVernee Nun, ich lese darüber und, ja, es ist schlecht, weil Sie die Elternklasse nicht übergeben können, wenn der Erbe gewünscht wird. Es nervt, dass Java keine Typedef hat. Ich stimme jedoch nicht zu, dass (nicht pseudo) typedef eine schlechte Sache ist. Ich denke, wenn Sie in Java schreiben wollen, müssen Sie den Regeln von Java folgen. Warum hast du das geschrieben? Jetzt bin ich nicht so sicher, dass ich es benutzen möchte ... Ich könnte es immer noch für interne Objekte verwenden, die nie außerhalb ihrer Klasse gehen. – NickSoft