Also mache ich eine Vollbild-Anwendung und stieß auf etwas seltsam.DisplayMode.equals (DisplayMode dm) Verwirrung
Die Methode DisplayMode.equals (DisplayMode dm) wird außer Kraft gesetzt, aber ich denke nicht, dass sie richtig implementiert ist. Der folgende Code druckt falsch an die Konsole:
public static void main(String[] args){
DisplayMode mode = new (1,2,16, DisplayMode.REFRESH_RATE_UNKNOWN);
System.out.println(mode.equals(new DisplayMode(1, 2, 16, 60)));
}
Wenn die Anzeige-Modi die gleiche sparen für ihre Bildwiederholraten sind, und einer von ihnen ist nicht bekannt, dann denke ich, dass sie gleich sein sollten. Warum ist das nicht der Fall, und kann mir jemand einen Workaround empfehlen? Warum zeigen die Java Docs online, dass es zwei überladene Versionen der .equals() -Methode gibt, eine mit einem DisplayMode-Objekt und eine mit einem Java.Lang.Object-Objekt? https://docs.oracle.com/javase/7/docs/api/java/awt/DisplayMode.html
Warum gibt es eine .equals() Methode für dieses Objekt außer Kraft gesetzt, aber nicht die viele Dutzende von anderen Objekten in den Java-Bibliotheken? –
@AviCaspe Ich bin mir der Antwort nicht sicher. Es kann eine Leistungsüberlegung geben. Zur Kompilierzeit kann der Compiler in diesem Fall angeben, welche Methode genau aufgerufen werden soll; Wenn Sie also zwei "DisplayMode" -Objekte vergleichen möchten, würden Sie einige Anweisungen speichern, indem Sie denjenigen aufrufen, der einen 'DisplayMode' als Argument verwendet, anstatt den, der ein' Object' nimmt. Eine andere Sache, die in Betracht gezogen werden sollte, ist, dass Anmerkungen nicht vorhanden waren, als diese Klasse hinzugefügt wurde, so dass Sie '@ Override' nicht verwenden konnten, was möglicherweise etwas damit zu tun hat. – Zymus