动态引用类(Java)
我有一个HashMap,使用类作为键和值,链接一个类(键)和另一个类,该类将键类的实例作为其构造函数的唯一参数 我的代码如下所示:动态引用类(Java),java,oop,Java,Oop,我有一个HashMap,使用类作为键和值,链接一个类(键)和另一个类,该类将键类的实例作为其构造函数的唯一参数 我的代码如下所示: HashMap<Class<?>, Class<?>> links = //Instantiation //Adding some things to the map Object object = //The instance I'll use to build some other thing Class<?> V
HashMap<Class<?>, Class<?>> links = //Instantiation
//Adding some things to the map
Object object = //The instance I'll use to build some other thing
Class<?> ValueClass = this.links.get(object.getClass());
try {
return new ValueClass(object);
} catch (NullPointerException e) { //Not in the HashMap
//Some exception handling
}
HashMap>links=//实例化
//在地图上添加一些东西
Object=//我将用来构建其他东西的实例
Class ValueClass=this.links.get(object.getClass());
试一试{
返回新的ValueClass(对象);
}catch(NullPointerException e){//不在HashMap中
//一些异常处理
}
我对Java和良好的编码实践知之甚少,因此除了想知道如何正确地进行这项工作外,我还想知道这样做是否有重要意义,是否有更好的方法
提前谢谢 这将根据您的描述创建对象
Constructor<?> constr = ValueClass.getConstructor( object.getClass() );
Object newObj = constr.newInstance(object);
Constructor constr=ValueClass.getConstructor(object.getClass());
Object newObj=constr.newInstance(Object);
所有类型的异常都可能由此引发-请参阅javadoc。这不可编译。在这里,您真正想做什么?这在Java中是一种非常不寻常的模式(特别是对于刚接触Java的人来说),感觉就像是一个抽象工厂。@Davidermann我想他想创建一个存储在映射中的值的实例,无论使用什么键来获取该值,创建它的一个实例,并将其传递给created@DavidEhrmann上下文如下:我想通过套接字发送一些JSON对象,但我不想要JSON格式的完全相同的对象;我想要它的“简化”版本。键是可以简化的类,值是它们的简化版本。值类将其对应的“膨胀”类的一个实例作为其构造函数的唯一参数。@因此,所有简化版本的Foo(如果Foo是可简化的)都将是相同的?我认为这个答案可以改进,以考虑到:(1)不需要
(2)变量是以camelCase和(3)形式编写的const
是保留字。@abl-Ah,未使用的保留关键字。但是我坚持使用OP的变量名,我真的不知道要构造的类的范围。