Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t访问类';公共领域_Java - Fatal编程技术网

Java Can';t访问类';公共领域

Java Can';t访问类';公共领域,java,Java,编辑:我修改了这个问题以回应一些评论/答案。我正在打印对象字段,但它仍然会中断。在这一点上,我想是javarepl的错 我是Java新手,所以对于这个非常基本的问题,我深表歉意。我正在javarepl中玩Java class SomeKlass { public int someField; public SomeKlass(int inputField) { someField = inputField; }

编辑:我修改了这个问题以回应一些评论/答案。我正在打印对象字段,但它仍然会中断。在这一点上,我想是javarepl的错

我是Java新手,所以对于这个非常基本的问题,我深表歉意。我正在javarepl中玩Java

     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吗?