[英]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.