繁体   English   中英

在Java中是否可以定义一个通用方法来将超类型类作为参数?

[英]In Java is it possible to define a generic method to take a supertype class as an argument?

我想实现这样的目标:定义一个抽象方法

public abstract void registerError(*any subclass of an ErrorVO or ErrorVO e);

并在实际实现方法的子类中:

public void registerError(ASubclassOfErrorVO e);

非常感谢你的帮助!

您可以在类的声明中使用泛型,如下所示:

static abstract class Parent<T extends ErrorVO> {
    public abstract void registerError(T e);
}

static class Child extends Parent<ASubclassOfErrorVO> {
    @Override
    public void registerError(ASubclassOfErrorVO e) {
    }
}

<T extends errorVO>中,将T定义为扩展errorVO的类。 这不能仅与方法声明一起使用的原因是,子类中可能有许多方法可能会覆盖父方法,只有通过在类级别声明类型T ,编译器才能知道哪个方法被覆盖。

public abstract class A <T extends ErrorVO> {
    public abstract void register(T e);
}

public class B extends A<SubclassOfErrorVO> {
    @Override
    public void register(SubclassOfErrorVOe e) {
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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