你将对象概念与静态方法概念相混淆:
您可以拥有像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