[英]Using abstract class that implements an interface (Java)
我有这个界面
public interface IAnything {
void m1();
void m3();
}
以及实现此接口的两个抽象类:
public abstract class AbstractThing1 implements IAnything {
public void m1() {}
public void m3() {}
}
public abstract class AbstractThing2 implements IAnything {
public void m1() {}
public void m3() {}
}
在我的代码中的某个地方,我想调用一个function doSomething(kindOfAbstractClass)
,该function doSomething(kindOfAbstractClass)
执行m1()
和m3()
以及其他作业,具体取决于kindOfAbstractClass。
如何定义和调用doSomething()
? 我这样做了,但是没有用。 谢谢
private <T extends IAnything> void doSomething(T kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}
doSomething(AbstractThing1.class);
您的问题是您要提供类类型而不是实例作为参数来进行操作
看看下面修改过的代码:
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{
}
尝试这个:
private void doSomething(IAnything kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.