【发布时间】:2016-08-31 13:03:40
【问题描述】:
我在锁定泛型类型时遇到问题。下面是一个由两个枚举类实现的接口。 Cover 类使用泛型类型,该类型在CarRequest 类中指定。我希望能够只使用实现CoverType 接口的枚举。
一开始我想用一个由枚举扩展的抽象类并使用:
public class Cover<T extends AbstractCoverType>
但这不起作用,因为我无法扩展枚举类。比我想到的下面介绍的接口解决方案,但是在这种情况下我做不到:
public class Cover<T implements CoverType>
如何锁定 Cover 类以仅接受前两个枚举而不接受第三个枚举作为泛型类型?
界面:
public interface CoverType {}
第一个枚举:
public enum FireCoverType implements CoverType {
SANITATION, RENTAL, GLASS
}
第二个枚举:
public enum CarCoverType implements CoverType {
ACCESSORIES, LEGAL_ASSISTANCE
}
第三个枚举:
public enum PaymentTerm {
MONTH, QUARTER, YEAR
}
封面类:
public class Cover<T> {
private T coverType;
// getter and setter
}
汽车请求:
public class CarRequest {
private Cover<CarCoverType> cover;
// getter and setter
}
【问题讨论】: