- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在锁定通用类型时遇到问题。下面是一个由两个枚举类实现的接口(interface)。 Cover
类使用的是泛型,它在 CarRequest
类中指定。我希望能够仅使用实现 CoverType
接口(interface)的枚举。
起初我想到了使用一个由枚举扩展的抽象类并使用:
public class Cover<T extends AbstractCoverType>
但这不起作用,因为我无法扩展枚举类。我想到了下面介绍的界面解决方案,但是在那种情况下我做不到:
public class Cover<T implements CoverType>
我如何锁定 Cover
类以仅接受前两个枚举而不是第三个枚举作为泛型类型?
接口(interface):
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
}
最佳答案
使用 extends
绑定(bind)泛型类型定义时,无论它是类还是接口(interface)。
换句话说,没有 implements
在通用类型上层绑定(bind)中 - extends
适用于类和接口(interface)。
所以:
public class Cover<T extends CoverType>
... 是您正在寻找的解决方案,其中CoverType
是您的枚举实现的接口(interface)。
来自documentation :
Note that [...]
extends
is used in a general sense to mean either "extends" (as in classes) or "implements" (as in interfaces).
同样值得注意的是,enum
s 不能扩展类,因为它们隐式扩展了 java.lang.Enum已经。
关于java - 如何锁定作为枚举的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39250464/
我是一名优秀的程序员,十分优秀!