2014-04-07 13 views
5

Un metodo setter non statico può apparire come segue:Java statici auto-riferimenti

private int var; 

public void setVar(int var) { 
    this.var = var; 
} 

E non riesco a trovare il modo di risolvere che con un metodo statico:

private static int var; 

public static void setVar(int var) { 
    // ??? 
} 

One la soluzione è scrivere myClass.var = var;. Ma è brutto, perché quando rinominare la mia classe, devo trovare e sostituire tutte le occorrenze. Un'altra soluzione è rinominare il parametro su v e scrivere var = v;. Anche per me questo è brutto.

Non c'è davvero alcun modo per risolvere questo come in php ?

+2

Quando si utilizza un IDE corretto, è sempre possibile eseguire un * Refactor Rename *, che cambierà anche qualsiasi nome di classe esplicito. – skiwi

+1

Se si utilizza una soluzione di refactoring quando si rinomina la classe, è necessario occuparsi di tali riferimenti. –

+0

Dato che il campo della classe 'var' è privato, non devi mai cercare altrove nella stessa classe per i riferimenti, quando rinomini la tua classe senza usare uno strumento di refactoring adeguato (come un IDE). Inoltre, come trovi tutte le importazioni in altri tipi dove usi il metodo setter 'setVar()' se non usi un IDE? Ti suggerisco di utilizzare un IDE e non ci dovrebbero essere problemi _real_ là fuori. – Harmlezz

risposta

1

Non è possibile fare queste cose in altro modo se non si sa ....... ....

myClass.var = var; 
var = v; 

solo due vie che già si conosce .......... Entrambi sono buone uno ..non è brutto si può noi e .......

se vogliamo utilizza qualsiasi IDE come Eclipse che si prenderà cura ogni volta che si cambia il nome della classe ...........

+0

@halloei felice di poterti aiutare ......... –

1

abbiamo bisogno di scrivere come segue:

ClassName.var=var; 
1

fare in questo modo:

public class Example { 

    private static int var; 

    public static void setVar(int var) { 
     Example.var = var; 
    } 
} 
2

Rinominare la variabile del campo è il modo più conveniente. Dai uno sguardo allo Android Code Style Guideline. Suggeriscono di nominare tutti i campi statici come sVariable. Non è brutto e molto comprensibile. Quindi, sarebbe come:

private static int sVar; 

public static void setVar(int var) { 
    sVar = var; 
} 
+0

Non so come si comportano gli altri IDE, ma quando creo automaticamente un metodo setter per 'sVar' con NetBeans, il nome del metodo sarà 'setsVar' invece di' setVar'. Fastidioso. – halloei

+0

@halloei non è fastidioso per me, solo per cancellare un carattere. – nikis

+0

Puoi cambiare questa impostazione in quel ide. Tuttavia, Eclipse e Intellj non hanno questa opzione sicura di netbeans. Ma dovrebbe essere lì. –