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

class A{
    ..
    String blah;
    ..
}

class B{
    ..
    String blah;
    ..
}

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

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

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

#1楼 票数:6 已采纳

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

interface Blah {
    String getBlah();
}

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

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

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

  ask by Lohith translate from so

未解决问题?本站智能推荐:

2回复

使用反射获取字段的泛型类型

有没有办法在Java中获取字段的泛型类型? 我有以下对象变量: 现在我尝试使用反射来获取所有具有ScheduleView作为类型的对象变量,其中WantedClass为泛型类型: 问题是如果泛型类型是WantedClass我也想检查if-Statement。 我也尝试使用方法get
6回复

泛型:基于泛型类的泛型类

我正在尝试创建一个基于具有基于泛型的集合的类的通用服务 我只是不确定如何创建一个基于此GenericClass的服务,并具有T的具体实现。我希望像 但编译器并不喜欢这样。 任何想法如何做到这一点? 渣
1回复

Java泛型:如何测试字段类型是否为泛型类的规范

我想测试类型MyType<int>的字段是否为MyType<?>子类型的字段。 如果该字段的类型为MyType<?> ,则可以使用ParameterizedType getActualTypeArguments正确地实例化它。 但是我无法进行测试:
1回复

如何获取字段的泛型参数类

我正在使用反射库[1]获取字段。 对于声明为public Map<Integer, Boolean> nameF; 我想获取其字符串表示形式:“地图名称F”。 虽然“ Map”和“ nameF”很容易获得,但我无法获取“ Integer”和“ Boolean”类型。 [1]
1回复

从Java的字段中提取多个泛型类型

我正在使用Spring boot,并且正在做反射以提取我的包中以“ Repository”结尾的类以及声明为MyGenericClass<T,R>所有字段。 我的问题是我无法从myField提取ClassA和ClassB 我希望针对以下代码运行相同的代码: 并得到Class
1回复

Java从泛型类型中提取类信息

如何为Class<T>分配值-不必显式传递它? 我知道类型擦除的故事。 但是我想知道:Java编译器没有看到Class<T> c并意识到我在谈论<T> ,我是否应该能够在没有初始化的情况下使用该变量! 或者不应该将其自动初始化为原始类型。 为什么不这样
1回复

具有泛型类型的字段可能为空的泛型类

我需要创建一个类,我打算在每个操作结束时返回一个实例。 这是带有字段的类: 如您所见,有 2 个构造函数:一个需要 T 数据,另一个不需要。 这是因为某些操作提供了一些详细信息以及状态和消息,而其他操作则不提供。 现在,看看以下可能返回不同类型的 OperationResult 实例的方法: 如您所
3回复

构造泛型类

我有一个关于java泛型的简单问题。 我如何构建泛型类? 我有这门课: 现在我想创建一个新的实例是SearchResult,但是当我这样做时,我得到一个错误。 SearchResult result = new SearchResult<MyModel>(myListOfMy