2012-02-06 106 views
-5

有时我们可以从ClassA的事:Java静态进口

import com.software.ClassB; 
    classbObject = new ClassB ; 
    ClassB.getMethodX(); 

,我们也可以从ClassA的使直接

import com.software.ClassB; 
classbObject = new ClassB ; 
classbObject.getMethodX(); 

的是这2个病例之间之探源(调用直接在类或目的)?有推荐吗? 谢谢,

回答

1

你的意思是,为什么这样的:

ClassB.getMethodX() 

距离这有什么不同?

classbObject.getMethodX() 

如果是这样,那么第二个是不知何故错误。我的意思是它仍然有效,但它没有任何意义。该方法被声明为静态的,它“属于”类。你有一个类的静态方法,无论多少个实例。所以,每一个静态方法应该被称为以静态方式: ClassB.getMethodX()

+0

尤金,我已经通过添加classbObject = new ClassB更新我的问题; – lola 2012-02-06 13:16:43

+0

@lola的答案依然如此。看起来像你的getMethodX()方法是静态的吗?你想知道如何从Class或Object中调用它?如果是这样,那么正如我所说,建议从班级。 – Eugene 2012-02-06 13:19:37

0

无需导入就可以做ClassB classbObject的唯一方法是如果它们在同一个包中。如果您问,如果您使用导入的答案是,如果需要导入,则使用导入,因为类不在同一个包中。

我在您的问题中看不到静态导入,因此不确定这与您的问题有何关系。

2

如果你指的是同样的事情,我的意思是:没有,没有,因为getMethodXClassB.getMethodX()classbObject.getMethodX()之间没有功能上的差异是静态的。只有你的编译器可能会给你一个警告,classbObject.getMethodX()由于来自非静态上下文的静态方法调用而不鼓励。

+0

我认为应该说,即使没有区别,也应该劝阻通过实例调用静态方法。 – 2012-02-06 13:36:14

+0

它也是不鼓励的,像Eclipse这样的某些IDE会在这样做时发出警告。 – belgther 2012-02-06 13:43:02