生成的静态方法调用未在Java 8中编译

尤里(Yuriy Nakonechnyy)

长话短说,下面的代码不是在Java 8中编译的,而是在Java 7中很好地编译和执行的

public static void main(final String[] args) {
    final Class instance = null;
    meth(instance); // compiler error here
}

private static <K, T extends Enum<T> & IAliased<K>> void meth(final Class<T> clazz) {

}

错误发生在上述线与消息:The method meth(Class<T>) in the type AnotherSpike is not applicable for the arguments (Class)

尽管完全理解这样的代码不是100%类型安全的,但我需要在Java 8中的生产代码中使用非常相似的调用(并且该代码使用警告进行编译并在Java 7中可以正常工作)。

有趣的是,在以下情况下,以上代码可以很好地编译(带有警告,但这是可以的):

  1. 如果& IAliased<K>已从方法签名中删除:

    private static <K, T extends Enum<T>> void meth(final Class<T> clazz)
    
  2. 如果在签名中& IAliased<K>替换为& IAliased

    private static <K, T extends Enum<T> & IAliased> void meth(final Class<T> clazz)
    

上面的两个观察使我想到,更像是Java 8中编译器错误,而不是对Java 8编译器的有思想的增强,尽管我可能会误会。

无论如何,有人可以建议我如何没有编译器错误的情况Class meth 带有签名的原始实例传递方法吗?

在此先感谢您的帮助!

灵魂大师

这似乎是IDE内部编译器中的错误。

使用Eclipse,我得到的错误与您描述的相同。但是,当使用JDK编译器时,我仍然仅收到警告并进行编译。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle Java SE 8u20 JDK中泛型静态方法调用的Java泛型不兼容类型编译错误

来自分类Dev

在Clojure中调用Java非静态方法

来自分类Dev

从Java中的静态成员调用非静态方法

来自分类Dev

Haxe宏,从生成的var setter中调用静态方法

来自分类Dev

为什么在Java7中编译而不在Java8中编译?

来自分类Dev

在Java 7中编译的代码在Java 8中无法编译。请提供说明

来自分类Dev

在Java中的静态方法中调用非静态方法(非静态变量错误)

来自分类Dev

为什么在Java 8中编译该通用代码?

来自分类Dev

Java 8 编译时编织中的 @Configurable 支持

来自分类Dev

Java 8类型推断静态方法调用

来自分类Dev

Java 8:使用反射调用接口的静态方法

来自分类Dev

Java:使用静态方法在Main外部的方法中调用对象

来自分类Dev

Java 8:更好地扩展静态方法的类还是更好地直接调用静态方法?

来自分类Dev

在Java 8中,为什么不能调用当前类正在实现的接口静态方法

来自分类Dev

在静态方法中调用非静态方法

来自分类Dev

对存储在var中的Java类调用静态方法

来自分类Dev

在Kotlin中调用Java静态方法的可能性

来自分类Dev

使用Scala中的泛型调用Java静态方法

来自分类Dev

在Java中调用非静态方法之前创建实例

来自分类Dev

Java 8中静态方法引用的限制

来自分类Dev

Java 8中静态方法引用的限制

来自分类Dev

在C ++中调用静态链接的静态方法

来自分类Dev

在Java 8中进行编译时,存储某些类的方法参数名称

来自分类Dev

而在Java 8中使用的方法参考编译错误

来自分类Dev

使用Spring自动装配从Java中的静态类调用非静态方法?

来自分类Dev

为什么当默认方法是通过子类的静态方法覆盖的Java 8编译失败?

来自分类Dev

Java8:当引用的方法不是静态的时,为什么引用方法不能编译?

来自分类Dev

在Java中,在静态方法内部,确定该静态方法在哪个类上调用的方法是什么?

来自分类Dev

如何从未在Java中实例化的类中调用方法?

Related 相关文章

  1. 1

    Oracle Java SE 8u20 JDK中泛型静态方法调用的Java泛型不兼容类型编译错误

  2. 2

    在Clojure中调用Java非静态方法

  3. 3

    从Java中的静态成员调用非静态方法

  4. 4

    Haxe宏,从生成的var setter中调用静态方法

  5. 5

    为什么在Java7中编译而不在Java8中编译?

  6. 6

    在Java 7中编译的代码在Java 8中无法编译。请提供说明

  7. 7

    在Java中的静态方法中调用非静态方法(非静态变量错误)

  8. 8

    为什么在Java 8中编译该通用代码?

  9. 9

    Java 8 编译时编织中的 @Configurable 支持

  10. 10

    Java 8类型推断静态方法调用

  11. 11

    Java 8:使用反射调用接口的静态方法

  12. 12

    Java:使用静态方法在Main外部的方法中调用对象

  13. 13

    Java 8:更好地扩展静态方法的类还是更好地直接调用静态方法?

  14. 14

    在Java 8中,为什么不能调用当前类正在实现的接口静态方法

  15. 15

    在静态方法中调用非静态方法

  16. 16

    对存储在var中的Java类调用静态方法

  17. 17

    在Kotlin中调用Java静态方法的可能性

  18. 18

    使用Scala中的泛型调用Java静态方法

  19. 19

    在Java中调用非静态方法之前创建实例

  20. 20

    Java 8中静态方法引用的限制

  21. 21

    Java 8中静态方法引用的限制

  22. 22

    在C ++中调用静态链接的静态方法

  23. 23

    在Java 8中进行编译时,存储某些类的方法参数名称

  24. 24

    而在Java 8中使用的方法参考编译错误

  25. 25

    使用Spring自动装配从Java中的静态类调用非静态方法?

  26. 26

    为什么当默认方法是通过子类的静态方法覆盖的Java 8编译失败?

  27. 27

    Java8:当引用的方法不是静态的时,为什么引用方法不能编译?

  28. 28

    在Java中,在静态方法内部,确定该静态方法在哪个类上调用的方法是什么?

  29. 29

    如何从未在Java中实例化的类中调用方法?

热门标签

归档