use*_*042 5 java generics class
当你有一个方法时,我明白将它声明为通用是有意义的,这样我就可以使用泛型参数.像这样:
public <T> void function(T element) {
// Some code...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我可以简单地声明每个方法都是通用的,那么使整个类成为通用的究竟是什么呢?
好吧,不同的是,如果你试图让你的类中的每个方法都是通用的,那么你在firstGenericMethod中使用的泛型类型可能是也可能不是同一类型.我的意思是.
public <T> void firstGenMethod(...){
}
public <T> void secondGenMethod(...){
}
Run Code Online (Sandbox Code Playgroud)
测试:
SomeClass ref = new SomeClass();
ref.firstGenMethod("string");
ref.secondGenMethod(123);//legal as this generic type is not related to the generic type which is used by firstGenMethod
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,没有任何一个方法具有相同的泛型类型.这取决于你如何调用它们.如果您使该类具有通用性,则该类型将应用于该类中的所有方法.
class Test<T>{
public void firstGenMethod(T t){
}
public void secondGenMethod(T t){
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
Test<String> testingString = new Test<>();
testingString.firstGenMethod("abc");
testingString.firstGenMethod(123);// invalid as your Test class only expects String in this case
Run Code Online (Sandbox Code Playgroud)
您通常会将您的类设为通用的,您希望该类的整个行为(方法)在同一类型上进行处理.最好的例子是Java Collection Framework中的类