java – 我可以使用泛型转换此方法吗?
发布时间:2020-12-15 08:47:08 所属栏目:Java 来源:网络整理
导读:我目前在一个类中有以下方法,我希望我可以推送到超类,因为我将有一些其他类需要类似的功能. public long convertToLong(EnumSetSomeTypeHere es) { long a = 0; for(SomeTypeHere sth : es) { a += sth.someLongProperty(); }} 如果我能做到这一点会很棒,除
我目前在一个类中有以下方法,我希望我可以推送到超类,因为我将有一些其他类需要类似的功能.
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的类不是通用的,则可以将绑定放在单个方法的声明中: 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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |