加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读