java - Java 有没有办法将数字作为参数传递?

标签 java generics

我正在类中分配一个 T 数组,T 扩展了 Number。我可以这样做:

myClass test = new myClass(Double.class, 20);

然后是构造函数本身:

myClass(Class<T> type, size)
{
    array = (T[]) Array.newInstance(type, size);
}

我想知道是否可以这样做:

myClass(Number n, size)
{
    array = (T[]) Array.newInstance(n.getClass(), size);
}

但是,我尝试使用第二个构造函数实例化一个对象:

myClass test = new myClass(Double, 15);

而且它不起作用。我做错了什么吗,还是根本不可能?

最佳答案

在 Java 中不能使用类名作为输入参数。引入 Object.class 是为了允许传递“类名”

所以答案是否定的,您不能将 Number 作为参数传递,但可以传递 Number.class。这就是它的用途:)

** 更新 **

也来自你的第二个构造函数定义

myClass(Number n, int size)
{
    array = (T[]) Array.newInstance(n.getClass(), size);
}

很明显,输入参数是 Number 或其子类的实例,而不是该类本身。我知道这是显而易见的,但它更清楚地说明了为什么不可能做你想做的事情

关于java - Java 有没有办法将数字作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432006/

相关文章:

java - 为什么不能将String类型添加到List<?>?

java - 对集合进行排序并将内容分配给java中的列表

java - 没有明确声明泛型类型的赋值如何被滥用?

java - Eclipse 调试器不工作。奇怪的断点

java - java.lang.annotation.Target 的 @Target({}) 的任何示例用法?

java - 升级没有 .proto 的 protobuf jar 的命名空间

Java泛型错误: not applicable for the arguments <T>

java - IntelliJ 可以从 log4j 输出创建指向源代码的超链接吗?

swift - 在数组中查找特定类型的项目

c# - 如何向下转换通用类型的实例?