泛型方法和接口作为方法中的参数有什么区别?

问题描述 投票:0回答:1
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 generics inheritance interface
1个回答
0
投票

给定的代码不是有效的 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
© www.soinside.com 2019 - 2024. All rights reserved.