繁体   English   中英

泛型类的提取字段

Extracting field of a generic class

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

class A{
    ..
    String blah;
    ..
}

class B{
    ..
    String blah;
    ..
}

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

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

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

1 个回复

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

interface Blah {
    String getBlah();
}

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

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

void func(List<? extends Blah> data) {
    for (Blah t : data) {
        System.out.println(t.getBlah());
    }
}
1 使用反射获取字段的泛型类型

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

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

我想使用反射获取泛型类“ T”的字段,以便从所有Type = String字段构建基本的Filter Predicate。 使用T.getFields似乎不是一个选择,这是我以为我会使用的选择。 此类将在我打算用于搜索各种对象的JTextField中使用。 我将通过它其他的搜索条件 ...

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

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

4 泛型类,泛型本身就是泛型

因此,我有一个通用类FirstClass&lt;T: SomeProtocol&gt; ,我还有第二个类(继承自NSObject ),其中包含一个FirstClass数组,并具有返回该数组元素的函数(因此返回FirstClass&lt;T&gt; )。 实际上,我在语法上遇到了麻烦。 ...

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

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

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

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

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

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

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

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

10 如何声明泛型类泛型?

我试图设计一种方法来声明一个函数,它可以返回一个Promise或一个rxjs Observable或一个具有特定返回类型的大多数Stream,但我不知道在typescript中声明这个函数的正确方法。 一般来说,我想在我的代码中这样: 通过这种方式我得到错误:“T不是通用的” ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM