我有一个带有类型参数的类。
class MyObject<IdType> {
@Setter
@Getter
private IdType id;
}
我认为我可以添加一些便利的方法,所以我这样做了。
<T extends MyObject<? super IdType>> void copyIdTo(T object) {
object.setId(getId());
}
< T extends MyObject<? extends IdType>> void copyIdFrom(T object) {
object.copyIdTo(this);
}
我突然意识到我可以做到这一点。
void copyIdTo(MyObject<? super IdType> object) {
object.setId(getId());
}
void copyIdFrom(MyObject<? extends IdType> object) {
object.copyIdTo(this);
}
这两组方法是否等效?哪种方式(或风格)更好?
void
,请优先使用后者。如果它们返回参数,则使用前者可能会很有用,因为您可以返回T
(例如Objects.requireNonNull
)。 - SlawT
时才需要引入它(例如返回类型、多个方法参数或具有多个类型的泛型参数,如Pair<T,T>
)。 - Thilo