2013-09-27 70 views
-1

MyDate.java具有方法對於Integer類型,方法setValue(Integer)未定義?

class MyDate { 
public void setValue(Integer value) { 
    value = 55; 
} 
} 

PassTest.java

import learn.MyDate; 

public class PassTest { 
    public static void changeInt(Integer value) { 
    setValue(value); 
} 

顯示錯誤的方法setValue(Integer)是未定義的類型Integer?爲什麼?

如果我們在這裏撥打setValue作爲value.setValue,會有什麼區別? 我試圖在谷歌找到它,但無法理解它?

+4

你應該在'MyDate'對象上調用'setValue()'。 –

+0

你的方法是在錯誤的類中定義的。您可能希望使用「int」而不是「Integer」來防止關於自動裝箱的奇怪問題。除非你有一個非常特殊的情況,否則請考慮值類型。 –

+0

旁註:在方法'setValue'中設置方法參數對類級沒有影響。 Java在一個副本上工作! – Fildor

回答

2
public class MyDate { 
    private int value; 
    public void setValue(int value) { 
     this.value = value; 
    } 
} 

然後:

import learn.MyDate; 

public class PassTest { 
    public static MyDate date = new MyDate(); 
    public static void changeInt(int value) { 
     date.setValue(value); 
    } 
} 

作爲一個例子。

0

PassTest這個類與MyDate沒有任何關係你爲什麼期望它具有在MyDate中定義的方法的可見性?也許你需要先創建一個MyDate的實例,然後調用它的方法。

相關問題