gpt4 book ai didi

java - 使用本地类型推断的交叉类型的有用应用

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:22 25 4
gpt4 key购买 nike

this blog 所述,我们现在可以使用本地类型推断编写以下内容(据我所知,如果不引入更多代码,这在以前是不可能的):

public static void main(String... args) {
var duck = (Quacks & Waddles) Mixin::create;
duck.quack();
duck.waddle();
}

interface Quacks extends Mixin {
default void quack() {
System.out.println("Quack");
}
}

interface Waddles extends Mixin {
default void waddle() {
System.out.println("Waddle");
}
}

interface Mixin {
void __noop__();
static void create() {}
}

这个问题可能过于宽泛或主要基于意见,但是在利用像这样的交叉路口类型时是否存在任何有用的应用程序?

最佳答案

从 Java 5 开始可以处理部分未知的类型,因此很容易将您的示例反向移植到 Java 8:

public static void main(String... args) {
use((Quacks & Waddles)Mixin::create);
}
private static <Duck extends Quacks & Waddles> void use(Duck duck) {
duck.quack();
duck.waddle();
}
interface Quacks extends Mixin {
default void quack() {
System.out.println("Quack");
}
}
interface Waddles extends Mixin {
default void waddle() {
System.out.println("Waddle");
}
}
interface Mixin {
void __noop__();
static void create() {}
}

因此,在 Java 10 中使用 var 可以实现与以前相同的功能,但源代码略少。能够做与以前相同的事情,但使用更少的样板代码正是 var 的意义所在,无论您是否使用交集类型。

关于java - 使用本地类型推断的交叉类型的有用应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410939/

25 4 0