Java 里的类型推导,上篇文章中的一个问题

by

看看我刚刚脑子里闪出了什么!

刚刚发了这篇文章,突然发现我说的那个 “Java 没有类型推导” 是错的。

于是我就写出了这样的代码。这玩意正确地推导了这个匿名类的准确的类型:

static <T> void doWith(T obj, Consumer<T> consumer) {
  consumer.accept(obj);
}

public static void main(String[] args) {
  doWith(new Object() {
    void starPlatinum() {
      System.out.println("Star finger!");
    }
  }, obj -> obj.starPlatinum());
}

这个代码是正确的,能编译能运行,并且这个 lambda 只能被写成这种形式,不能展开成匿名内部类,不能改成方法引用。

因为我觉得这灵光一闪太牛逼了,我就单独发文章了。

mikecovlee


Tweet this
Top


创建一个 issue 以申请评论
Create an issue to apply for commentary


协议/License

本作品 Java 里的类型推导,上篇文章中的一个问题 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,基于 http://ice1000.org/2018/01/04/JavaTypeInferencer/ 上的作品创作。
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
知识共享许可协议