加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读