我知道这很简单,但我真的不明白这个问题......
假设方法xMethod的签名如下。 解释调用xMethod的两种不同方法:
public static void xMethod(double[] a)
我想调用你刚才做的方法:
xMethod(myarray);
通过两种不同的方式可能意味着什么?也许我只是过多地研究这个问题。
答案 0 :(得分:10)
对于踢球,向你的教授展示:
XClass.class.getMethod("xMethod", a.getClass()).invoke(null, a);
然后告诉他们两个答案是
XClass.xMethod(a);
//and
xObject.xMethod(a); //this is bad practice
答案 1 :(得分:7)
如果这是第一次java类,我猜他正在寻找这两种情况:
//the one you have, using a precreated array
double[] myArray = {1.1, 2.2, 3.3}
xMethod(myarray);
//and putting it all together
xMethod(new double[]{1.1, 2.2, 3.3});
基本上说明你可以让数组通过,或者只是在通话中创建一个。
只是猜测
答案 2 :(得分:3)
您可以通过在类上调用它,或通过该类的实例来调用它。
Foo.xMethod(a);
或:
Foo foo = new Foo();
foo.xMethod(a);
第一种方法是首选,但第二种方法将编译并运行。但请注意,第二种方法被允许通常被认为是语言中的设计缺陷。
答案 3 :(得分:2)
静态方法不限于类的构造。 上面的方法可以通过构造类或仅使用命名空间来调用:
Classname myclass = new Classname();
myclass.xMethod(myarray);
或者您可以这样做:
Classname.xMethod(myarray);
如您所见,您不必构造类以使用该方法。另一方面,静态方法无法访问类的非静态成员。 我想这就是两个不同方式的问题......
答案 4 :(得分:0)
只有一种有效方式才能执行此操作:
YourClass.xMethod(myDoubleArray);
但是,你可以编写非完全正确的Java:
YourClass instance = new YourClass();
instance.xMethod(myDoubleArray);
这会起作用,但被认为是错误的。 Java编译器甚至会抱怨它。因为不需要通过创建类的实例来调用静态方法。静态意味着该方法与实例无关。通过实例调用它是毫无意义和令人困惑的。
稍后,您将看到有第二种正确的方法,即“反射”。但这是一个高级主题,所以我认为你不应该知道这一点。