如何编写具有通用类类型的Java方法?

埃拉德·本达(Elad Benda)

我想编写一个泛型方法(使用泛型或参数)

这将取代以下两个调用:

private ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof Type1;
        }
    });

private ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof Type2;
        }
    });

我已经尝试过了,但是出现了编译错误:

private <T> ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof T;
        }
    });

更新:

我也尝试过此操作,但仍然出现编译错误:

    verify(loggerUtilsWrapper).writeEvent(filterEvents(MatchNotFoundEvent.class));


private ServerEvent filterEvents(final Class<MatcherEvent> eventType) {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof eventType;
        }
    });
}
波希米亚风格

由于运行时类型擦除,因此“ T”不可用。标准方法是通过type参数传递类型令牌Class<T>

但是,在这种情况下,您不需要泛型,因为您实际上并没有使用该类型。相反,只需传递一个Class对象并对其进行比较:

private ServerEvent filterEvents(final Class<?> c) {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return c.isInstance(argument);
        }
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何编写具有通用类类型的Java方法?

来自分类Dev

具有通用类类型约束的通用方法

来自分类Dev

具有通用类型的类

来自分类Dev

具有通用类型的类

来自分类Dev

如何从具有通用返回类型的方法中返回具体类的实例

来自分类Dev

如何为具有受保护方法的内部类型类编写nunit测试用例?

来自分类Dev

如何用Java编写一个通用化以接收具有不同键类型的map参数的函数?

来自分类Dev

Java:如何编写通用方法?

来自分类Dev

如何将特征“注入”基类型类以在具有特征的通用类型方法中使用它们

来自分类Dev

如何为具有通用类型的箭头功能编写流类型

来自分类Dev

具有通用类型的Scala类

来自分类Dev

如何编写通用Java方法并比较该方法内部两个通用类型的变量?

来自分类Dev

如何从具有通用返回类型的方法引发异常

来自分类Dev

当具有有界类型参数的类的方法返回其自身类型的值时,如何让返回值保持通用(不进行强制转换)?

来自分类Dev

具有通用类型的方法,设置值

来自分类Dev

具有通用类型的接口和方法

来自分类Dev

具有newInstance的Java通用类型参数

来自分类Dev

具有通用类型的Java collect()流

来自分类Dev

具有newInstance的Java通用类型参数

来自分类Dev

使用具有不同类型/类列表的通用方法

来自分类Dev

如何编写通用方法来构建具有公共接口的数据列表?

来自分类Dev

如何编写通用方法来构建具有公共接口的数据列表?

来自分类Dev

类中没有通用引用的通用类型方法

来自分类Dev

具有类型约束的Java通用接口与C#通用

来自分类Dev

在Java中为具有类型参数的类编写相等契约

来自分类Dev

忽略具有通用类型的类的属性

来自分类Dev

转换具有类签名中通用属性的具体类型

来自分类Dev

如何为一个类编写通用的get方法?

来自分类常见问题

如何定义具有通用参数的类来扩展具有通用参数的类?

Related 相关文章

  1. 1

    如何编写具有通用类类型的Java方法?

  2. 2

    具有通用类类型约束的通用方法

  3. 3

    具有通用类型的类

  4. 4

    具有通用类型的类

  5. 5

    如何从具有通用返回类型的方法中返回具体类的实例

  6. 6

    如何为具有受保护方法的内部类型类编写nunit测试用例?

  7. 7

    如何用Java编写一个通用化以接收具有不同键类型的map参数的函数?

  8. 8

    Java:如何编写通用方法?

  9. 9

    如何将特征“注入”基类型类以在具有特征的通用类型方法中使用它们

  10. 10

    如何为具有通用类型的箭头功能编写流类型

  11. 11

    具有通用类型的Scala类

  12. 12

    如何编写通用Java方法并比较该方法内部两个通用类型的变量?

  13. 13

    如何从具有通用返回类型的方法引发异常

  14. 14

    当具有有界类型参数的类的方法返回其自身类型的值时,如何让返回值保持通用(不进行强制转换)?

  15. 15

    具有通用类型的方法,设置值

  16. 16

    具有通用类型的接口和方法

  17. 17

    具有newInstance的Java通用类型参数

  18. 18

    具有通用类型的Java collect()流

  19. 19

    具有newInstance的Java通用类型参数

  20. 20

    使用具有不同类型/类列表的通用方法

  21. 21

    如何编写通用方法来构建具有公共接口的数据列表?

  22. 22

    如何编写通用方法来构建具有公共接口的数据列表?

  23. 23

    类中没有通用引用的通用类型方法

  24. 24

    具有类型约束的Java通用接口与C#通用

  25. 25

    在Java中为具有类型参数的类编写相等契约

  26. 26

    忽略具有通用类型的类的属性

  27. 27

    转换具有类签名中通用属性的具体类型

  28. 28

    如何为一个类编写通用的get方法?

  29. 29

    如何定义具有通用参数的类来扩展具有通用参数的类?

热门标签

归档