我是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.
我做错了什么?如何将最终变量设置为对所有对象都是静态的?
答案 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);
}
}
局部变量(方法或块的本地)仅在定义它的方法(或块)中可见。无法向该变量添加任何修饰符。
没有特殊关键字将变量指定为本地;该决定完全来自声明变量的位置 - 它位于方法的开始和结束括号之间。因此,局部变量只对声明它们的方法可见;他们无法从班上其他人那里获得。