Java:返回类(不是一个实例)

前端之家收集整理的这篇文章主要介绍了Java:返回类(不是一个实例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以以静态方法返回一个类?我会解释…

我有:

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".

…和这(我希望)说明为什么这种方法不能解决OP的问题.

猜你在找的Java相关文章