2012-07-22 40 views
1

我有一個程序需要寫一個類文件來使它運行,我不能更改原始程序(一個java文件)。在非靜態變量的類中自動運行一個方法

,我不能改變Java文件實例化類的幾個版本可以說是這樣的:

CrazyClass crazy1 = new CrazyClass(); 
CrazyClass crazy2 = new CrazyClass(); 
CrazyClass crazy3 = new CrazyClass(); 
//more code follows 

它然後設置變量在那些新的實例化類是這樣的:

crazy1.var1 = 6; 
crazy2.var1 = 7; 
crazy3.var1 = 8; 
//more code follows 

後來程序實際上在這樣的println語句中調用那些實例化的類:

System.out.println(crazy1); 

,並期望彈出一條消息..

我的問題是我該如何做到這一點?我完全偏離基礎,認爲必須實例化的類不能有返回值嗎?我只能認爲我需要一個返回該消息的類中的方法,並自動調用,類似main,但不是靜態的。我在這裏向正確的方向前進還是完全脫離基地?請告知,我一整天都在讀書,我擔心此刻我看不到樹林。我確定它很簡單。

預先感謝您。

+1

1.'crazy1..3'不是類,而是類的實例---所謂的**對象**。 2.'System.out.println(crazy1)'不會** **'crazy1'。它以'crazy1'作爲參數調用'println'。 3.類沒有返回值,不管它們「是否必須實例化」。 – 2012-07-22 13:59:39

回答

4

您將要覆蓋Object.toString()

在上面的打印語句中,println()-方法內部調用給定對象上的toString()-方法。這個方法可以被覆蓋以返回有意義的東西。例如:

@Override 
public String toString(){ 
    return "My var1-field has a value of: "+this.var1; 
} 
+1

要快! 1+更具體地說,對於OP,@ dc5553,給CrazyClass一個'public String toString(){/ * return info here * /}'方法是有道理的。如果您使用的是Eclipse或NetBeans,那麼可以讓IDE創建一個不錯的第一手工作。 – 2012-07-22 13:44:23

+0

謝謝你是特別的醬! – dc5553 2012-07-22 14:12:24

相關問題