"&"或",":A <T extends I1&I2>和A <T extends I1,I2>之间有什么区别?

nce*_*rar 8 java generics inheritance multiple-inheritance separator

多个通用接口分隔符:","或"&"

我一直在使用,A<T extends I1, I2>但今天,我看到了A<T extends I1 & I2>.这两种表示法有什么区别?

它有不同的含义吗?目的?

Mik*_*uel 14

A<T extends I1, I2>
Run Code Online (Sandbox Code Playgroud)

是一个A有两个参数的类型

  1. T 必须是的子类型 I1
  2. I2

您可以将其读作"A <介词>类型T,它扩展I1 <介词>类型I2",因此SortedMap<Key extends comparable, Value>是"从类比键到类型值的映射"


A<T extends I1 & I2>
Run Code Online (Sandbox Code Playgroud)

A具有单个参数的类型

  1. T必须是子类型I1和子类型I2

您可以将其读作"A <preposition>类型T,它扩展了I1和I2",因此SortedSerializableSet<T extends Serializable & Comparable>可以读取"T类型的一组有序且可比较的有序元素"