带有静态访问修饰符的最终变量

时间:2015-10-08 15:46:13

标签: java

我是Java的初学者。我正在学习最终变量,并尝试了这段代码。

package taopablot;


    class Person
    {
    String name;
    public void myPerson(String name)
    {
        this.name = name;
        System.out.println(this.name);
    }
    }

    public class Final {
    public static void main(String[] args)
    {
    static final String name = "Pablo";
    Person person = new Person();
    Person person2 = new Person();
    Person person3 = new Person();
    person.myPerson(name);
    person2.myPerson(name);
    person3.myPerson(name);


    }   
}

然而,Eclipse给了我一个错误。

Illegal modifier for parameter name; only final is permitted.

我做错了什么?如何将最终变量设置为对所有对象都是静态的?

1 个答案:

答案 0 :(得分:1)

如果变量是方法的局部变量,则无法分配任何访问修饰符。

变量必须位于类的主体中。

public class Final {
    // Moved out of main body in the Final body
    static final String name = "Pablo";

    public static void main(String[] args) {

        // Removed from here
        // static final String name = "Pablo";

        Person person = new Person();
        Person person2 = new Person();
        Person person3 = new Person();
        person.myPerson(name);
        person2.myPerson(name);
        person3.myPerson(name);
     }   
}

局部变量(方法或块的本地)仅在定义它的方法(或块)中可见。无法向该变量添加任何修饰符。

来自documentation

  

没有特殊关键字将变量指定为本地;该决定完全来自声明变量的位置 - 它位于方法的开始和结束括号之间。因此,局部变量只对声明它们的方法可见;他们无法从班上其他人那里获得。