gpt4 book ai didi

Java:返回类(不是实例)

转载 作者:搜寻专家 更新时间:2023-10-30 21:39:23 24 4
gpt4 key购买 nike

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

我有:

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

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

A.blah();

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

关于Java:返回类(不是实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1932625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com