是否可以在静态方法中返回一个类?我会解释...
我有:
public class A { public static void blah(){} }
public class B { }
我想在 B 中创建一个返回 A
的静态方法。所以你可以这样做:
A.blah();
和
B.getA().blah();
这没有创建 A
的实例。只需使用静态方法即可。
这可能吗?
最佳答案
这是对@irreputable 回答的反驳:
public class B {
public static A getA(){ return null; }
}
B.getA().blah(); //works!
它“有效”,但可能不是您期望的那种感觉,当然也不是一种有用的方式。让我们将其分为两部分:
A a = B.getA();
a.blah();
第一个语句返回一个(在本例中为 null)A
实例,第二个语句忽略该实例并调用 A.blah()
。所以,这些语句实际上等同于
B.getA();
A.blah();
或者(假设 getA()
没有副作用),就很简单
A.blah();
下面是一个更清楚地说明这一点的例子:
public class A {
public static void blah() { System.err.println("I'm an A"); }
}
public class SubA extends A {
public static void blah() { System.err.println("I'm a SubA"); }
}
public class B {
public static A getA(){ return new SubA(); }
}
B.getA().blah(); //prints "I'm an A".
...这(我希望)说明了为什么这种方法不能解决 OP 的问题。
关于Java:返回类(不是实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1932625/