Java 8改进的类型推断

喜欢ヅ旅行 2021-09-29 06:54 398阅读 0赞

一 点睛

Java8改进了泛型方法的类型推断能力,类型推断主要有如下两个方面。

可通过调用方法的上下文来推断类型参数的目标类型。

可在方法调用链中,将推断得到的类型参数传递到最后一个方法。

二 代码

  1. class MyUtil<E>
  2. {
  3. public static <Z> MyUtil<Z> nil()
  4. {
  5. return null;
  6. }
  7. public static <Z> MyUtil<Z> cons(Z head, MyUtil<Z> tail)
  8. {
  9. return null;
  10. }
  11. E head()
  12. {
  13. return null;
  14. }
  15. }
  16. public class InferenceTest
  17. {
  18. public static void main(String[] args)
  19. {
  20. // 可以通过方法赋值的目标参数来推断类型参数为String
  21. MyUtil<String> ls = MyUtil.nil();
  22. // 无需使用下面语句在调用nil()方法时指定类型参数的类型
  23. MyUtil<String> mu = MyUtil.<String>nil();
  24. // 可调用cons方法所需的参数类型来推断类型参数为Integer
  25. MyUtil.cons(42, MyUtil.nil());
  26. // 无需使用下面语句在调用nil()方法时指定类型参数的类型
  27. MyUtil.cons(42, MyUtil.<Integer>nil());
  28. // 希望系统能推断出调用nil()方法类型参数为String类型,
  29. // 但实际上Java 8依然推断不出来,所以下面代码报错
  30. // String s = MyUtil.nil().head();
  31. //String s = MyUtil.<String>nil().head();
  32. }
  33. }

发表评论

表情:
评论列表 (有 0 条评论,398人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java 8改进类型推断

    一 点睛 Java8改进了泛型方法的类型推断能力,类型推断主要有如下两个方面。 可通过调用方法的上下文来推断类型参数的目标类型。 可在方法调用链中,将推断得到的类型参数传