gpt4 book ai didi

java - 使用数组覆盖 Java 泛型方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:09 25 4
gpt4 key购买 nike

我有一个服务接口(interface),例如:

public interface Service {
<T> void print(T data);
}

当我尝试用数组覆盖此方法时,我会收到编译错误,这对于非数组对象来说没问题。
我知道如果在接口(interface)级别定义类型 T,数组和非数组都可以正常工作。
我没有创建数组,我只是尝试将数组作为类型传递。

public <String[]> void print(String[] data) //compilation error
public <String> void print(String data) // fine

为什么我不能用数组覆盖?

最佳答案

该泛型无法按您期望的方式工作。您的 Service 接口(interface)表示,任何 Service 必须能够打印任何内容。想要的

interface Service<T> {
void print(T t);
}

class StringService implements Service<String> {
void print(String str);
}

class StringArrayService implements Service<String[]> {
void print(String[] str);
}

你得到了什么

public <String> void print(String data) // fine

不太很好。完全一样

public <E> void print(E data);

除了类型变量不是命名为E,而是命名为String,并且它与您期望的String没有实际关系。

关于java - 使用数组覆盖 Java 泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752012/

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