Java Can';t访问类';公共领域
编辑:我修改了这个问题以回应一些评论/答案。我正在打印对象字段,但它仍然会中断。在这一点上,我想是javarepl的错 我是Java新手,所以对于这个非常基本的问题,我深表歉意。我正在javarepl中玩JavaJava Can';t访问类';公共领域,java,Java,编辑:我修改了这个问题以回应一些评论/答案。我正在打印对象字段,但它仍然会中断。在这一点上,我想是javarepl的错 我是Java新手,所以对于这个非常基本的问题,我深表歉意。我正在javarepl中玩Java class SomeKlass { public int someField; public SomeKlass(int inputField) { someField = inputField; }
class SomeKlass {
public int someField;
public SomeKlass(int inputField) {
someField = inputField;
}
}
SomeKlass someObj = new SomeKlass(1);
System.out.println(someObj.someField)
ERROR: cannot find symbol
symbol: variable someField
location: variable someObj of type java.lang.Object
System.out.println(someObj.someField);
为什么我不能访问someField
,即使我将它声明为SomeKlass
的公共字段?错误消息“error:nota statement”指出了问题所在,someObj.someField
是一个变量,而repl不知道您想对该变量做什么。如果你想打印它,你可以像这样做
System.out.println(someObj.someField);
您应该可以毫无问题地访问它,尽管公开字段是不好的做法。接受者、接受者和接受者更合适。如果你创建了一个main方法,你应该能够运行它
class App {
public static void main(String[] args) {
SomeKlass someObj = new SomeKlass(1);
System.out.println(someObj.someField);
}
}
现在正确的方法是使用getter和setter。
在你们班:
private someField;
public int getSomeField(){
return someField;
}
public int setSomeField(int someFieldInput){
someField = someFieldInput;
}
首先,假设这正是您所编写的代码,那么我可以建议您需要访问声明方法中的任何变量,即main方法或其他方法 其次,您不能只访问某个字段并将其留在那里,而不将某个字段分配给它或不将其分配给某个字段。所以,
someObj.someField代码>不是正确的Java语法。
下面的例子将帮助您
public class SomeKlass {
public int someField;
public SomeKlass(int inputField) {
someField = inputField;
}
public static void main(String[] args) {
SomeKlass someObj = new SomeKlass(1);
someObj.someField = 1; // Assign something to it.
int i = someObj.someField; //Assign it to something.
System.out.println(i);
}
}
因为您使用的是javarepl,所以我专门在上面分享我的ans, 如果要使用javarepl打印变量值,可以执行以下操作
newsomeklass(1).someField代码>
到目前为止,我还没有使用javarepl,但是如果您使用像Eclipse这样的IDE,它会更好 你可以很好地访问它,但你需要对它做些什么。您需要编写一些使用该字段的Java代码行,而不是仅仅在一行中引用该字段。不要使用javarepl,省去一些麻烦,使用文本编辑器(如记事本或记事本+)并使用cmd提示符/终端进行编译。或者下载一个免费的IDE eclipse/intellij,它将加快您的编码学习。我还没有机会玩repl。你知道为什么someObj
被键入为Object而不是SomeKlass吗?