gpt4 book ai didi

java - 如何用泛型参数覆盖具有 Object 参数的方法?

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

我想覆盖一个参数类型为Object的方法:

public void setValue(Object value) {
// ...
}

并使该参数具有通用类型 T:

@Override
public void setValue(T value) {
super.setValue(value);
}

我如何在 Java 中执行此操作?

在 Eclipse 中我得到这些错误:

Multiple markers at this line
- The type parameter T is hiding the type T
- Name clash: The method setValue(T) of type TextField<T> has the
same erasure as setValue(Object) of type JFormattedTextField but does not
override it
- The method setValue(T) of type TextField<T> must override or
implement a supertype method

最佳答案

您不能让重写方法接受比它重写的方法更窄的类型。

如果可以,以下内容将成为可能:

class A {
public setValue(Object o) {…}
}

class B<T> extends A {
@Override
public setValue(T o) {…};
}

A a = new B<String>(); // this is valid
a.setValue(new Integer(123)); // this line would compile, but make no sense at runtime

关于java - 如何用泛型参数覆盖具有 Object 参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319438/

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