java - 使用数组类型参数通过 Class.forName 初始化一个类
问题描述
我有一个带有构造函数的类,我需要按名称对其进行初始化。
public class Wall extends Tile
{
public Wall(double x, double y, double[] data)
{
super();
}
}
Tile 是一个抽象类,它的构造函数是空的。
我可以初始化这个类
Class.forName("Wall").newInstance();
如果我想在启动类时传递参数,我可以使用
Constructor<?> c = Class.forName("Wall").getConstructor(param);
c.newInstance(Paramater values ie. "String");
至于param
,这取决于您传递的参数类型。
int
:Integer.TYPE
double
:Double.TYPE
String
:String.class
这篇关于 stackoverflow 的帖子帮助我处理了这些 参数
但我的问题是如何传递数组参数。即一个double[]
?
我试过Double[].class
了,但那抛出了一个ThreadNotFoundException
.
任何帮助,将不胜感激。
解决方案
它可能有更好的方法。但我已经测试过它并且它有效:
Constructor<?> constr = Class.forName("Wall").getDeclaredConstructor(Double.TYPE, Double.TYPE, (new double[] {}).getClass());
double x = 1;
double y = 2;
double[] data = new double[] {1, 2, 3, 4};
Wall obj = (Wall) constr.newInstance( x , y, data );
推荐阅读
- html - CSS动画星级评分一一
- docker - 我可以在 Docker 容器中构建新的 Docker 容器吗?
- android - 对缺少注释处理器依赖项的 Lint 检查
- c# - 在字符之前修剪字符串,但仍保留其后的剩余部分
- node.js - 从 Node.JS REST api 填充数据,在占位符中显示
- sum - 如何使用openmp进行3d求和
- ios - 如何解决'React/RCTBridgeModule.h'文件在circleci中找不到#import“React/RCTBridgeModule.h”
- postgresql - 如何使用 jOOQ 更新 PostgreSQL 上复合列的单个子字段?
- java - 从存储中删除图像
- c# - NLog 包含过滤器未生效