如何表明Class对象应该表示接口的子类型?

时间:2016-08-26 14:35:29

标签: java inheritance enums

我有以下枚举:

public enum NotifierTypes {
    EMAIL(EmailNotifier.class);
    SMS(SmsNotifier.class)

    private final Class internalValue;

    NotifierTypes(Class internalValue) {
        this.internalValue = internalValue;
    }

    public Class getNotifierClass() {
        return internalValue;
    }
}

public interface INotifier {...}
public class EmailNotifier implements INotifier {...}

我希望提供给构造函数的参数表示实现接口的类型,比如INotifier。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

使用通用绑定:

private final Class<? extends INotifier> internalName;

NotifierTypes(Class<? extends INotifier> internalName){ /* ... */ }

public Class<? extends INotifier> getIntName(){ /* ... */ }