public class CollectionsOutput {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//A.display(2,3);
}
}
interface B
{
}
class A implements B
{
}
class C <T & B>
{
}
在上面的Java程序中,我在C类声明中遇到编译错误。 (作为'&gt;'预期)。但我认为我们也可以在Generics中将接口指定为绑定类型,但它不起作用。请帮助我。
答案 0 :(得分:3)
对于泛型和边界,Workspace.Merge(sourcePathSpec, targetPath, versionFrom, versionTo, lockLevel,MergeOptionsEx.Baseless);
仅用于泛型类型参数声明的多个边界之间。
如果您的意思是&
必须是T
的子类型,请使用B
:
extends
您可能会期望它是这样的:
class C<T extends B> {}
因为这就是你通常有一个类实现接口的方式。
class C<T implements B> {} // INCORRECT
但是,在为泛型类型参数指定边界时,必须使用class Concrete implements AnInterface {}
,而不是extends
。
使用implements
适用于多个边界,例如:
&
请注意,使用多个边界时,除第一个边界之外的任何额外边界必须是接口类型,而不是类或其他类型变量。
答案 1 :(得分:1)
您可能认为<T extends B>
可以确保您作为通用传递的任何类型仍然附加到您的标记界面。
答案 2 :(得分:0)
交叉点类型fn
仅允许在method
等结构中指定多个绑定。
例如:
var length = 10;
function f() {
console.log(this.toString());
console.log(this.length);
}
var obj = {
length: 5,
fn: f,
method: function(fn) {
fn();
arguments[0]();
}
};
f()
f(1);
obj.fn();
obj.fn(1);
obj.method(f, 1);
obj.method(f, 1, 2);
这意味着hive -hiveconf prvDate=$prvDate -S -e "select max(ID) from Employee where unix_timestamp(date,'dd-MM-yyyy') > unix_timestamp('${hiveconf:prvDate}','dd-MM-yyyy')"
通过扩展A & I & ...
并同时实现C extends A & I & ...
的某种类型进行参数化。
另一个例子:
public class C<T extends Number & Serializable> {
}
此处对参数类型应用双重限制。
您的案例不使用类型绑定,因此不能使用交集类型。