Ho appena ricevuto un commento di recensione secondo cui la mia importazione statica del metodo non era una buona idea. L'importazione statica era di un metodo da una classe DA, che ha principalmente metodi statici. Quindi, nel mezzo della logica aziendale, ho avuto un'attività che apparentemente apparteneva alla classe attuale:
import static some.package.DA.*;
class BusinessObject {
void someMethod() {
....
save(this);
}
}
Il revisore non desiderava che io cambiassi il codice e non l'ho fatto, ma sono abbastanza d'accordo con lui. Uno dei motivi addotti per non importare staticamente era che confondeva il modo in cui era stato definito il metodo, che non era nella classe corrente e non in nessuna superclasse, quindi è troppo tempo per identificarne la definizione (il sistema di revisione basato sul web non è cliccabile link come IDE :-) Non penso davvero che questo importi, le importazioni statiche sono ancora abbastanza nuove e presto ci abitueremo a localizzarle.
Ma l'altro motivo, quello con cui sono d'accordo, è che una chiamata di metodo non qualificata sembra appartenere all'oggetto corrente e non dovrebbe saltare contesti. Ma se davvero appartenesse, avrebbe senso estendere quella super classe.
Così, quando ha senso per i metodi di importazione statici? Quando l'hai fatto? Ti è piaciuto / ti piace l'aspetto delle chiamate non qualificate?
EDIT: L'opinione popolare sembra essere quella dei metodi di importazione statica se nessuno li confonderà come metodi della classe corrente. Ad esempio metodi da java.lang.Math e java.awt.Color. Ma se abs e getAlpha non sono ambigui, non vedo perché readEmployee lo sia. Come in molte scelte di programmazione, penso che anche questa sia una preferenza personale.
Grazie per la vostra risposta ragazzi, sto chiudendo la domanda.
import static
, la funzione èstatic import