gpt4 book ai didi

java - 数组类型参数的暴露程度相同

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

如果标题有误,首先抱歉,我是java新手。

我想要创建方法,如果输入是对象的类,那么它的yield是对象,但如果输入是对象数组的类,那么它的yield数组是对象。

public final static <T extends BaseClass> T fromJson(String json, Class<? extends BaseClass> klas) throws JsonSyntaxException {
return (T) GSON.fromJson(json, klas);
}

public final static <T extends BaseClass> T[] fromJson(String json, Class<? extends BaseClass[]> klas) throws JsonSyntaxException {
return (T[]) GSON.fromJson(json, klas);
}

所以用法是:

BaseClass r = fromJson("{}", BaseClass.class);
BaseClass[] r2 = fromJson("{}", BaseClass[].class);

但是编译器说两个方法有相同的闭包,如何处理?

最佳答案

不幸的是,由于类型删除,编译为字节码的签名如下:

public final static BaseClass fromJson(String json, Class klas) throws JsonSyntaxException {
return (BaseClass) GSON.fromJson(json, klas);
}

public final static BaseClass[] fromJson(String json, Class klas) throws JsonSyntaxException {
return (BaseClass[]) GSON.fromJson(json, klas);
}

如您所见,签名实际上是相同的。

您真正能做的最好的事情就是将其中一个或两个方法重命名为不同的名称。

关于java - 数组类型参数的暴露程度相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582013/

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