方法级别的Java泛型
谁能解释一下下面的代码方法级别的Java泛型,java,generics,Java,Generics,谁能解释一下下面的代码 public <T extends Emp> void foo(ArrayList<T> list) { list.add(list.remove(0)); // (cycle front element to the back) } public void foo(数组列表){ list.add(list.remove(0));//(将前面的元素循环到后面) } 我试图理解泛型将如何应用于void返回类型。 注意:我已经更改了代码,
public <T extends Emp> void foo(ArrayList<T> list) {
list.add(list.remove(0)); // (cycle front element to the back)
}
public void foo(数组列表){
list.add(list.remove(0));//(将前面的元素循环到后面)
}
我试图理解泛型将如何应用于void返回类型。
注意:我已经更改了代码,现在它没有给出任何错误
我试图理解泛型将如何应用于void返回类型
这只是一种语法。泛型不适用于void
返回类型,它们应用于整个方法
泛型参数的名称和限制需要放在程序文本的某个地方。在类声明中,它们跟随在尖括号中的类名之后。在泛型方法声明中,它们位于可访问性指示符public
之后,并位于返回类型void
之前
人们可以很容易地想象泛型类型的替代位置,例如
public void foo<T extends Emp>(ArrayList<T> list) // Imaginary syntax
public void foo(ArrayList list)//虚构语法
甚至
public void foo(ArrayList<T> list) <T extends Emp> // Imaginary syntax
public void foo(ArrayList list)//虚构语法
但是Java设计者决定了返回类型指示符之前的位置
我试图理解泛型将如何应用于void返回类型
这只是一种语法。泛型不适用于void
返回类型,它们应用于整个方法
泛型参数的名称和限制需要放在程序文本的某个地方。在类声明中,它们跟随在尖括号中的类名之后。在泛型方法声明中,它们位于可访问性指示符public
之后,并位于返回类型void
之前
人们可以很容易地想象泛型类型的替代位置,例如
public void foo<T extends Emp>(ArrayList<T> list) // Imaginary syntax
public void foo(ArrayList list)//虚构语法
甚至
public void foo(ArrayList<T> list) <T extends Emp> // Imaginary syntax
public void foo(ArrayList list)//虚构语法
但是Java设计者决定了返回类型指示符之前的位置。泛型不会应用于
void
如果你说类型是
,你是说Emp的任何子类型都可以用来代替T
在代码中,您可以使用
而不是
,因为您没有使用Emp
public <T> void foo(ArrayList<T> list) {
list.add(list.remove(0)); // (cycle front element to the back)
}
泛型不会应用于
void
如果你说类型是
,你是说Emp的任何子类型都可以用来代替T
在代码中,您可以使用
而不是
,因为您没有使用Emp
public <T> void foo(ArrayList<T> list) {
list.add(list.remove(0)); // (cycle front element to the back)
}
它不适用于无效。这是针对ArrayList的。此代码不会编译。您试图将
字符串
添加到数组列表
中,其中T
绝对不是字符串。它们不会应用于void。我已修改了代码。。我试图理解void返回类型的泛型。@GurwinderSingh它没有给出任何错误。它的编译很好。它不适用于空。这是针对ArrayList的。此代码不会编译。您试图将字符串
添加到数组列表
中,其中T
绝对不是字符串。它们不会应用于void。我已修改了代码。。我试图理解void返回类型的泛型。@GurwinderSingh它没有给出任何错误。很好。。