gpt4 book ai didi

java - Java 中的泛型 - 实例化 T

转载 作者:行者123 更新时间:2023-11-29 08:10:57 24 4
gpt4 key购买 nike

我在 Java 中有以下代码:

public static<T> void doIt(Class<T> t)
{
T[] arr;
arr = (T[])Array.newInstance(t, 4);
}

我希望能够使用 doIt 来同时使用原始类型(例如 double)和类对象(例如 String)。

我可以通过使用(代码编译)来做到这一点:

    doIt(double.class);
doIt(String.class);

但是,我担心在第一种情况下,Java 编译器实际上会使用 Double 类包装 double 基本类型,这是我不希望的。在这种情况下,我实际上希望它实例化一个原始数组(同时用 String 实例化一个对象数组)。有人知道 doIt(double.class) 会发生什么吗?它被实例化为 Double 还是 double?

谢谢。

最佳答案

您实际上无法在此处创建 T = double - Java 泛型根本不适用于原始类型。但是,您仍然可以实例化您的数组:

import java.lang.reflect.*;

public class Test {
public static void main(String[] args) {
createArray(double.class);
}

private static void createArray(Class<?> clazz) {
Object array = Array.newInstance(clazz, 4);
System.out.println(array.getClass() == double[].class); // true
}
}

这实际上取决于您之后要对数组执行的操作。

关于java - Java 中的泛型 - 实例化 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173844/

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