我如何调用抽象类的非静态方法,而不使用其子类或扩展它,因为抽象类和子类太复杂,所以我不想造成任何副作用。
例如,可以使用类名和点运算符来调用抽象类的具体静态方法,而无需创建子类。类似的是有什么方法可以调用非静态方法。
我只想运行一个方法,不想运行任何其他代码。我尝试使用反射,但它需要实例
最佳答案
抽象类是抽象,这意味着您无法创建该类的实例。
因此,您无法调用抽象类的实例方法。
public abstract class Foo {
static void bar();
void foobar();
}
您可以调用 Foo.bar()
,因为它不是实例方法(意味着它不需要类的实例),但您不能调用 foobar()
因为你不能执行 new Foo().foobar()
.
Foo.bar(); // OK, we don't need an instance.
Foo foo = new Foo(); // Not OK - we cannot instantiate an abstract class.
foo.foobar();
<小时/>
有关创建抽象类实例而不必使用派生类的方法,请参阅 ernest_k's answer利用匿名类。
关于java - 如何调用抽象类的非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648365/