Per me, equals() between objects of inconvertible types
è una delle ispezioni IntelliJ più utili.
Non è quasi mai inteso che oggetti con tipi diversi siano uguali tra loro.
Capisco che il metodo equals
sia stato introdotto prima di Java 5, quindi non ci sono generici da sfruttare. Ma anche il nuovo% sicuro di% co_de introdotto da JDK7 non è ancora sicuro. Mi mancano alcune considerazioni chiave su questo design?
Per typesafe equals (), intendo qualcosa come Objects.equals
. In modo che diventi un errore di compilazione piuttosto che un avviso di ispezione.
====================================
aggiunto il 2018-11-17:
RE: user949300 risposta. Capisco che ci saranno casi limite scoperti quando utilizzeremo una versione più limitata di public static <T> boolean equals(T a, T b)
. Ma in realtà, nella maggior parte dei casi chiamando equals
, stiamo davvero confrontando solo le DTO: hanno lo stesso tipo e hanno le stesse proprietà? Non sto suggerendo che dovremmo sempre utilizzare la versione limitata, ma dovrebbe aiutare nel 95% del caso in quanto il compilatore può rendere le cose più ovvie di un ispettore specifico per IDE.