Java:返回类(不是一个实例)
发布时间:2020-12-14 16:35:03 所属栏目:Java 来源:网络整理
导读:是否可以以静态方法返回一个类?我会解释… 我有: public class A { public static void blah(){} }public class B { } 我想创建一个静态方法在B女巫返回A.所以你可以做: A.blah(); 和 B.getA().blah(); 这样,没有创建一个A的实例.只需使用它静态方法. 这
是否可以以静态方法返回一个类?我会解释…
我有: 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的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |