interface Size(){
}
class Triangle implements Size{
}
class Rectangle implements Size{
}
piblic <I extends size> method1(I input){
sout(input)
}
piblic method2(Size s){
sout(input)
}
main (){
method1(new Triangle());
method2(new Rectangle());
}
方法 1 和方法 2 之间有什么区别,尽管方法 2 与所有实现 Size 接口的类一起使用。
我已经检查过这两种方法是否工作相同,但如果它们相同,那么创建这些场景的目的是什么。
给定的代码不是有效的 Java,因为方法声明缺少返回类型。假设您隐式地认为它们是
void
,那么将 method1
声明为通用方法确实没有任何好处。
通常,此类声明的好处是允许您指定返回值与传递的类型匹配,例如:
public <I extends Size> I enlarge(I input) {
// Returns the same type as was passed, allowing you to do
// Triangle small = new Triangle();
// Triangle big = enlarge(small)
或者多个参数具有相同的类型:
public <I extends Size> void chain(I input1, I input2) {
// The definition of I ensures you'd be chaining objects of the same type