所以,我正在製作一個全屏應用程序,並且遇到了一些奇怪的事情。DisplayMode.equals(DisplayMode dm)Confusion
方法DisplayMode.equals(DisplayMode dm)被覆蓋,但我不認爲它的執行很正確。下面的代碼打印假到控制檯:
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)));
}
如果顯示模式是相同的,只留下他們的刷新率,其中之一是未知的,那麼我想他們應該是平等的。爲什麼不是這樣,有人可以建議我使用的解決方法?另外,爲什麼在線Java Docs顯示有兩個.equals()方法的重載版本,一個是DisplayMode對象,另一個是Java.Lang.Object對象? https://docs.oracle.com/javase/7/docs/api/java/awt/DisplayMode.html
爲什麼有.equals()方法重寫此對象,而不是許多許多其他對象的Java庫? –
@AviCaspe我不知道答案。這可能會影響性能。在編譯時,編譯器能夠判斷在這種情況下要調用哪個確切的方法;所以如果你想比較兩個'DisplayMode'對象,你可以通過調用一個以'DisplayMode'作爲參數的指令來保存一些指令,而不是採用'Object'的指令。另外需要考慮的是添加這個類時註釋不存在,所以你不能使用'@ Override',這可能與它有關。 – Zymus