gpt4 book ai didi

java - 如何在签名中使用泛型正确覆盖抽象方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:58:30 26 4
gpt4 key购买 nike

我以为我明白如何做到这一点,但我遇到了一些意想不到的行为,所以显然我错过了一些东西。这是问题的归结。

基类:

public abstract class Base<T>
{
abstract public void foo(List<? extends T> l);
}

派生类:

public class Derived<T> extends Base
{
@Override
public void foo(List<? extends T> l) { return; }
}

Base 类符合要求,但是当我编译 Derived 类时,我得到:

Derived.java:3: Derived is not abstract and does not override abstract method foo(java.util.List) in Base

public class Derived extends Base
^
Derived.java:5: method does not override or implement a method from a supertype

@Override  
^

2 errors

参数的泛型 List<? extends T>似乎是问题的原因。如果我用基本类型 int 替换两个签名中的那部分完成得很好。

谁能告诉我这是怎么回事?

最佳答案

你应该做的

public class Derived<T> extends Base<T>

您需要指定 <T>对于 Base否则你将不得不通过简单地声明 List 来覆盖方法即没有泛型

关于java - 如何在签名中使用泛型正确覆盖抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077304/

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