我目前在一个类中有以下方法,我希望我可以将其推送到父类(super class),因为我将有一些其他类需要类似的功能。
public long convertToLong(EnumSet<SomeTypeHere> es) {
long a = 0;
for(SomeTypeHere sth : es) {
a += sth.someLongProperty();
}
}
如果我能做到这一点,那就太好了,除了集合之外,我以前从未真正使用过 Java 泛型。
最佳答案
您需要对泛型类型进行限制。如果包含 convertToLong
的类在同一类型上被参数化,您可以将边界放在那里:
import java.util.*;
public class GenericTest<C extends GenericTest.HasLongProperty> {
static interface HasLongProperty {
long someLongProperty();
}
public long convertToLong(Collection<C> es) {
long a = 0;
for(C sth : es)
a += sth.someLongProperty();
return a;
}
}
或者如果包含 convertToLong
的类不是通用的,您可以将绑定(bind)单独放在该方法的声明中:
import java.util.*;
public class GenericTest {
static interface HasLongProperty {
long someLongProperty();
}
public <C extends GenericTest.HasLongProperty> long convertToLong(Collection<C> es) {
long a = 0;
for(C sth : es)
a += sth.someLongProperty();
return a;
}
}
关于java - 我可以使用泛型转换此方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074602/