繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM