gpt4 book ai didi

java - 使用实现接口(interface)的抽象类 (Java)

转载 作者:行者123 更新时间:2023-12-02 05:19:44 24 4
gpt4 key购买 nike

我有这个界面,

public interface IAnything {
void m1();
void m3();
}

还有两个实现该接口(interface)的抽象类:

public abstract class AbstractThing1 implements IAnything {
public void m1() {}
public void m3() {}
}

public abstract class AbstractThing2 implements IAnything {
public void m1() {}
public void m3() {}
}

在我的代码中的某个地方,我想调用一个函数 doSomething(kindOfAbstractClass) 来执行 m1()m3() 等作业取决于 kindOfAbstractClass。

如何定义和调用 doSomething()?我这样做了,但它不起作用。谢谢

private <T extends IAnything> void doSomething(T kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}

doSomething(AbstractThing1.class);

最佳答案

您的问题是您提供的是类类型而不是实例作为 doSomething 的参数

看看下面修改后的代码:

public class MyClass {


void doIt(){
doSomething(new ConcreteThing());
}

private <T extends IAnything> void doSomething(T kindOfAbstractClass) {

kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
}

}


interface IAnything {
void m1();
void m3();
}

abstract class AbstractThing1 implements IAnything {
public void m1() {}
public void m3() {}
}


class ConcreteThing extends AbstractThing1{

}

关于java - 使用实现接口(interface)的抽象类 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875724/

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