你將對象概念與靜態方法概念相混淆:
您可以擁有像Test(test2,test2等等)對象的許多實例...每個實例都有自己的生活:在現實生活中,類比是擁有許多汽車(例如)班級(豐田卡羅拉),例如:所有汽車ar e按照模型指定(類)
所描述的方式進行創建然後您就有了不使用具體實例的方法的靜態方法:例如:安全性ckecks可以是靜態方法:許多汽車通過獨特的安全性檢查(這不是你可以從你的車中推出的功能:它不依賴於實例)
您可以使用此示例來更好地理解
public class Test{
int trails;
int days;
public String toString() {
return "trails :"+ trails +", days : "+ days;
}
}
public class Launcher{
public static void main (String []args){
if(args.length!=0){
Test test = new Test();
test.trails= Integer.parseInt(args[0]);
test.days= Integer.parseInt(args[1]);
Test test2 = new Test();
test2.trails= 5;
test2.days= 2;
Command cmd = new Command();
cmd.doSomething(test);
cmd.doSomething(test2);
cmd.doSomething(test);
}
}
}
public class Command {
Test lastTested;
public void doSomething(Test data) {
lastTested = data;
System.out.println("working with "+ lastTested);
}
}
在上面的例子中,你創建一個實例測試你填寫的數據。 然後你創建一個Command的實例,它將在它的狀態中保存上一次執行的Test實例,然後通過它的toString()方法打印測試實例數據。
您可以使用其他數據創建另一個Test實例,並將其傳遞給相同的cmd(Command實例的方法doSomething())。然後你會看到在cmd裏面的實例發生了變化,但是回到你的第一個實例測試保持了預期的值
不,它不希望你把所有的東西都變成靜態的。 – Ingo
老兄你需要一個對象作爲實例變量屬於一個對象而不是靜態變量或方法本質上是類成員,你不需要一個對象來使用它們。 –
這兩個答案都缺乏正確的參數檢查。你期望兩個參數。那麼爲什麼你只檢查,至少有一個參數被設置? – Hannes