我有这些课程。
class RedSocket {}
class GreenSocket {}
class RedWire {}
class GreenWire {}
我有一个使用了两个泛型类型的类
public class Connection<W, S> {}
其中W代表导线类型,S代表插座类型。
我正在尝试强制进行编译时检查,以确保插座和导线具有相同的颜色。
我尝试了以下方法:
public class Connection<W extends Wire & Color, S extends Socket & Color> {}
interface Color {}
interface Red extends Color {}
interface Green extends Color {}
interface Socket {}
interface Wire {}
class RedSocket implements Socket, Red {}
class GreenSocket implements Socket, Green {}
class RedWire implements Wire, Red {}
class GreenWire implements Wire, Green {}
但这并不能确保Color
在两个泛型类型中使用相同,并且仍然允许我这样做:
public class Connection<W extends Wire & Color, S extends Socket & Color> {
public static void main(String[] args) {
new Connection<RedWire, GreenSocket>();
new Connection<GreenWire, RedSocket>();
}
}
(这个问题已经被Radiodef在这里的讲解得非常透彻)
如何强制进行编译时检查以确保套接字和电线颜色相同?
M
和Q
的原因是什么呢? - Jean-François Savard