具有泛型返回类的Java方法签名
以下两种方法签名的区别是什么:具有泛型返回类的Java方法签名,java,methods,generics,declaration,signature,Java,Methods,Generics,Declaration,Signature,以下两种方法签名的区别是什么: public <T extends MyClass> Set<T> getMyList() {...} public Set<? extends MyClass> getMyList() {...} public Set getMyList(){…} 公共集在第一个方法中,T在方法体中是可访问的,而在第二个方法体中是不可访问的。这是否有用取决于方法的工作。在第一个方法中,T在方法体中是可访问的,而在第二个方法中则不是。这是否
public <T extends MyClass> Set<T> getMyList() {...}
public Set<? extends MyClass> getMyList() {...}
public Set getMyList(){…}
公共集在第一个方法中,T
在方法体中是可访问的,而在第二个方法体中是不可访问的。这是否有用取决于方法的工作。在第一个方法中,T
在方法体中是可访问的,而在第二个方法中则不是。这是否有用取决于方法的工作。对于第一种方法,您可以将其用作:
Set<MyClass> set = thing.getMyList();
Set<MyDerivedClass> set = thing.getMyList();
Set<?> set = thing.getMyList();
Set<? extends MyClass> set = thing.getMyList();
Set<? extends MyDerivedClass> set = thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
为第一个设置,您可以将其用作:
Set<MyClass> set = thing.getMyList();
Set<MyDerivedClass> set = thing.getMyList();
Set<?> set = thing.getMyList();
Set<? extends MyClass> set = thing.getMyList();
Set<? extends MyDerivedClass> set = thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
Set=thing.getMyList();
设置奇怪,您应该返回一个“列表”,作为集:)奇怪的是,您应该返回一个作为集的“列表”
:)