Java:返回类(不是实例)

2024-04-05

是否可以在静态方法中返回一个类?我会解释...

I have:

public class A { public static void blah(){} }
public class B { }

我想在 B 中创建一个静态方法返回A。所以你可以这样做:

A.blah();

And

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的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:返回类(不是实例) 的相关文章

随机推荐