基本的Java作业

时间:2012-03-12 22:24:24

标签: java

我知道这很简单,但我真的不明白这个问题......

  

假设方法xMethod的签名如下。   解释调用xMethod的两种不同方法:

public static void xMethod(double[] a)

我想调用你刚才做的方法:

xMethod(myarray);

通过两种不同的方式可能意味着什么?也许我只是过多地研究这个问题。

5 个答案:

答案 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编译器甚至会抱怨它。因为不需要通过创建类的实例来调用静态方法。静态意味着该方法与实例无关。通过实例调用它是毫无意义和令人困惑的。

稍后,您将看到有第二种正确的方法,即“反射”。但这是一个高级主题,所以我认为你不应该知道这一点。