是的 – 这是可能的(虽然不是与您的方法签名),是的,与您的签名类型必须相同。
使用您给出的签名,T必须与调用点处的单个类型(例如String或Integer)相关联。但是,您可以声明具有多个类型参数的方法签名
public void func(Set s, Set t)
注意在上面的签名中,我已经在签名中声明了类型S和T.因此,这些不同于和独立于与包含该函数的类或接口相关联的任何通用类型。
public class MyClass {
public void foo(Set s, Set t); //same type params as on class
public void bar(Set s, Set t); //type params independent of class
}
您可能想查看java.util包中集合类的一些方法签名。泛型是一个非常复杂的主题,特别是当考虑通配符(?extends和?super)时。例如,通常情况下,可以采用Set< Number>作为参数也应该接受Set< Integer> ;.在这种情况下,您会看到如下的签名:
public void baz(Set extends T> s);
有很多问题已经在SO上,你看看这个问题!
不知道从函数返回一个int的点是,虽然你可以做到,如果你想!