2014-08-29 100 views
2

我需要知道如何從對象中獲取值。 例如:如何從對象中獲取值

public ConfirmDialog(String quest) { 
    int a = JOptionPane.showConfirmDialog(null, 
      quest, 
      "Confirmation", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE); 
} 

當我回到這個對象,我沒有得到整數。有人可以給我一個解釋嗎?谷歌沒有幫我..

Object b = new ConfirmDialog("Question?"); 
     System.out.println(b); 
+1

你是什麼意思,你沒有得到Integer?你的意思是'a'在你使用'System.out.println(b);'時沒有被打印出來? – qbit 2014-08-29 17:59:56

+0

是的,這是我的輸出:ConfimDialog @ afe1bc5 – coo12 2014-08-29 18:02:35

+0

沒有return語句。你做了一個'a'但沒有做任何事情。 – csmckelvey 2014-08-29 18:11:22

回答

2

您正在嘗試打印Object而不是int a。當您傳遞一個對象System.out.println()時,您默認呼叫.toString()方法,該方法嘗試給出對象的文本表示形式。你得到的背面是Object-Type@HexValue of the object hashcode hense的[email protected]

現在,你知道你需要呼籲int,爲什麼你讓這件事印刷,還有第二個問題。您在構造函數中創建並初始化變量int a,這意味着您不能在其他任何地方使用它。你所要做的就是外面創建它每一次初始化您調用構造函數,像這樣的:System.out.println(new ConfirmDialog("Question?").a);

需要注意的是::如果你實例ConfirmDialog()

int a; 
public ConfirmDialog(String quest) { 
    int a = JOptionPane.showConfirmDialog(null, 
      quest, 
      "Confirmation", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE); 
} 

現在你可以使用它打印像這樣:

Object b = new ConfirmDialog("Question?");

,那麼你需要以投bConfirmDialog到ACCE SS a,像這樣:

System.out.println(((ConfirmDialog)b).get());

或者你可以做這樣的:

ConfirmDialog b = new ConfirmDialog("Question?");並調用System.out.println(b.a);

但是總的來說,你應該有你的私有變量的訪問和使用getter方法。例如:

private int a; 
public ConfirmDialog(String quest) { 
    int a = JOptionPane.showConfirmDialog(null, 
      quest, 
      "Confirmation", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE); 
} 

public int getA(){ 
    return a; 
} 

現在如果你想訪問a你可以這樣做:
System.out.println(new ConfirmDialog("Question?").getA());

希望這有助於。

+0

非常有幫助,非常感謝這篇文章! – coo12 2014-08-29 18:37:36

1

你正在初始化一個構造函數內的局部變量。構造函數用於創建對象,並且它們不具有返回類型。試試下面的代碼: -

int a; 
public ConfirmDialog(String quest) { 
    a = JOptionPane.showConfirmDialog(null, 
      quest, 
      "Confirmation", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE); 
} 

public int get() { 
    return a; 
} 

Object b = new ConfirmDialog("Question?"); 
System.out.println(((ConfirmDialog)b).get()); 
+3

因爲'b'的類型是'Object','get'是不可訪問的。 'b'需要聲明爲'ConfirmDialog'類型,以使'get'變得可訪問 - 否則'b.get'將失敗。 – Zyerah 2014-08-29 18:02:32

+0

@Emrakul更正了它 – 2014-08-29 18:05:07

+0

謝謝,現在我明白了! – coo12 2014-08-29 18:07:36

1

試試這個

int a; 

public ConfirmDialog(String quest) { 
    a = JOptionPane.showConfirmDialog(null, 
      quest, 
      "Confirmation", 
      JOptionPane.YES_NO_OPTION, 
      JOptionPane.QUESTION_MESSAGE); 

} 

則:

ConfirmDialog b = new ConfirmDialog("Question?"); 
System.out.println(b.a); 

More information

附:僅用於演示..原因...代碼令人毛骨悚然.. :)

+1

由於'b'屬於'Object'類型,'a'是不可訪問的。 'b'需要被聲明爲'ConfirmDialog'類型,以使'a'變得可訪問 - 否則'b.a'將失敗。 – Zyerah 2014-08-29 18:02:15

+0

true .. thx ..我糾正了我的答案.. – 2014-08-29 18:04:52