2017-09-15 31 views
1

編輯:我已經修改了這個問題以迴應一些評論/答案。我正在打印出對象字段,但仍然中斷。在這一點上,我猜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公共領域?

+0

你可以很好地訪問它,但你需要做一些事情。您將需要編寫一些使用該字段的Java代碼行,而不僅僅是單獨在行上引用該字段。 –

+0

從未使用過javarepl,爲自己省去一些麻煩,並使用文本編輯器(如記事本或記事本++)並使用cmd提示符/終端進行編譯。或者下載一個免費的IDE eclipse/intellij它會加快你的編碼學習。 – kodaman

回答

4

錯誤消息「錯誤:不是語句」表示該問題,someObj.someField變量並且repl不知道您要如何處理該變量。如果你想打印它,你可以這樣做

System.out.println(someObj.someField); 
+0

我還沒有機會玩repl呢。你知道爲什麼'someObj'被輸入爲Object而不是SomeKlass嗎? – yshavit

0

你應該訪問它沒問題,儘管暴露你的領域是不好的做法。 Getters和Setters會更合適。如果你製作一個主要的方法,你應該可以運行它。

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; 
} 
-1

首先,假設這是你寫的確切的代碼,那麼我可以告訴你需要執行訪問在聲明的方法的任何變量,即主要方法什麼的。

其次,您不能僅僅訪問某個字段並將其留在那裏而不分配某些內容或不將其分配給某些內容。所以,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); 
    } 
} 
0

由於您使用javarepl我分享我的答明確就可以了, 如果你想使用打印的變量值javarepl你可以做這樣的事情 new SomeKlass(1).someField; enter image description here 我還沒有使用javarepl至今,但如果你使用Eclipse這樣的IDE,它會更好。