是否可以以静态方法返回一个类?我会解释…
我有:
public class A { public static void blah(){} } public class B { }
我想创建一个静态方法在B女巫返回A.所以你可以做:
A.blah();
和
B.getA().blah();
这样,没有创建一个A的实例.只需使用它静态方法.
这可能吗?
解决方法
这是对@无可争议的回答的反驳:
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".