方法级别的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它没有给出任何错误。很好。。