gpt4 book ai didi

java - Java 中具有继承性的 Varargs

转载 作者:行者123 更新时间:2023-11-30 11:41:30 24 4
gpt4 key购买 nike

假设我有一个类 Foo像这样:

public class Foo<T> {
protected T invoke(Object... args);
}

现在假设我添加这个:

public class Bar<T, Arg> extends Foo<T> {
public T invoke(Arg arg);
}

这是否意味着我无法创建 Bar<T, Object[]>因为它会创建两个 invoke()具有“本质上”相同签名的方法?或者会 Bar.invoke()安全隐藏 Foo.invoke()在这种情况下(因为 Bar.invoke() 在运行时是采用 Object 而不是 Object[]Foo.invoke() )?

相关:正在转发Bar.invoke()Foo.invoke()安全好吗?

最佳答案

Bar.invoke不会覆盖 Foo.invoke .如果你只打电话 bar.invoke没有参数你会得到 foo.invoke打电话。

但是如果你构造一个 reference to invoke is ambiguous ,你会得到一个编译时错误 ( Bar )对象:Bar<Object, Object[]> bar = new Bar<Object, Object[]>()然后调用 bar.invoke(new Object[]{})因为这 2 个调用方法在运行时具有相同的删除。

关于java - Java 中具有继承性的 Varargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com