泛型类的提取字段

时间:2019-09-18 20:41:30

标签: java generics

我有多个类,每个类都有一个公共字段。我正在编写一种处理提取此公共字段的方法。例如:

class A{
    ..
    String blah;
    ..
}

class B{
    ..
    String blah;
    ..
}

因此,不是为每个类类型编写多个方法,而是可以使用接受泛型类的方法来实现? 我想要的是一种类型的方法:

void func(List <T> data){
    for(T t:data){
        print t.blah()
    }
}

我知道上面的代码不正确,但是我们如何获得类似的功能?

1 个答案:

答案 0 :(得分:6)

首先,创建一个包含所有常用方法签名的接口。

interface Blah {
    String getBlah();
}

然后,使您现有的类AB实现该接口。 (使用@Override以确保您正确覆盖了该方法。)

最后,在func中,列出实现该接口的对象的列表。

void func(List<? extends Blah> data) {
    for (Blah t : data) {
        System.out.println(t.getBlah());
    }
}