泛型类的提取字段

Loh*_*ith 0 java generics

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

class A{
    ..
    String blah;
    ..
}

class B{
    ..
    String blah;
    ..
}
Run Code Online (Sandbox Code Playgroud)

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

void func(List <T> data){
    for(T t:data){
        print t.blah()
    }
}
Run Code Online (Sandbox Code Playgroud)

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

rge*_*man 6

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

interface Blah {
    String getBlah();
}
Run Code Online (Sandbox Code Playgroud)

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

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

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