How to access field whenever its name is same with

2020-05-06 13:15发布

问题:

I have a field and a local variable with same name. How to access the field?

Code:

String  s = "Global";
private void mx()
{
   String  s = "Local";
   lblB.setText(s); // i want global
}

In c++ use :: operator like following:

::s

Is were :: operator in Java?

回答1:

That's not a global variable - it's an instance variable. Just use this:

String  s = "Local";
lblB.setText(this.s);

(See JLS section 15.8.3 for the meaning of this.)

For static variables (which are what people normally mean when they talk about global variables), you'd use the class name to qualify the variable name:

String  s = "Local";
lblB.setText(ClassDeclaringTheVariable.s);

In most cases I prefer not to have a local variable with the same name as an instance or static variable, but the notable exception to this is with constructors and setters, both of which often make sense to have parameters with the same name as instance variables:

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}


回答2:

You can use "this" keyword to do this.

Example:

public class Test {
private String s = "GLOBAL";

public Test() {
    String s = "LOCAL";
    //System.out.println(this.s);
    //=> OR:
    System.out.println(s);
}


public static void main(String[] args) throws IOException {
    new Test();
}

}



回答3:

Using this keyword you can use the global one but inside the same class. Or simply you can declare global variable static and access the same using classname.variable name.



回答4:

Yes you can also use class _ name.Globalvariable_name

Class simple 
{

 static int i;
 public static void main(string args[]) 
  {
      int i=10;
       System.out.println("Local Variable I =" +i) ;
     system.out.println("Global variable I =" +Simple.i) 
   } 

}



标签: java scope