Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组类型参数的相同公开_Java - Fatal编程技术网

Java 数组类型参数的相同公开

Java 数组类型参数的相同公开,java,Java,首先,如果标题不对,我是java新手 我想创建一个方法,如果输入是一个对象的类,那么它的收益率就是对象,但是如果输入是对象数组的类,那么它的收益率就是对象数组 public final static <T extends BaseClass> T fromJson(String json, Class<? extends BaseClass> klas) throws JsonSyntaxException { return (T) GSON.fromJson(j

首先,如果标题不对,我是java新手

我想创建一个方法,如果输入是一个对象的类,那么它的收益率就是对象,但是如果输入是对象数组的类,那么它的收益率就是对象数组

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);
}

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

不幸的是,由于类型擦除,编译成字节码的签名如下所示:

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);
}
如您所见,签名实际上是相同的

最好的方法是重命名其中一个或两个方法,使其具有不同的名称

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);
}