Java 将对象转换为类类型
我有一个函数返回的类类型,并希望将我的对象强制转换为该类型。代码如下:Java 将对象转换为类类型,java,class,casting,Java,Class,Casting,我有一个函数返回的类类型,并希望将我的对象强制转换为该类型。代码如下: Object valueData; //This is holding some data as Object Class className = getClassFromFunction(); //className = MyValueClass //Object val = (className.getClass()) valueData; boolean validate = validate(valueData);
Object valueData; //This is holding some data as Object
Class className = getClassFromFunction(); //className = MyValueClass
//Object val = (className.getClass()) valueData;
boolean validate = validate(valueData); //Failing
此处验证函数不接受参数作为对象,它将接受作为类的类型(className)
如何将对象强制转换为MyValueClass?首先,您必须了解强制转换并决定选择哪个重载方法。。。在编译时发生。与多态性相反,重载是在编译时决定的 因此,给定一组固定的、已知的“目标”类,下面的
instanceof
的级联(看起来很难看)将起作用:
if (someObject instanceof A) {
foo((A) someObject);
return;
}
if (someObject instanceof B) {
foo((B) someObject);
return;
}
请注意:这里没有使用反射的“工作环境”。反射在运行时开始,正如前面所说,您需要在编译时获得所有信息
如果有的话,您必须后退一步,看看是否有办法将重载方法转化为多态性。
(MyValueClass)valueData
?或者className.cast(valueDate)
。就像任何其他cast一样:MyValueClass req=(MyValueClass)valueData
@vincrichaud实际上我的类名对于每个请求都会不同,所以我不能直接将它强制转换到(MyValueClass)@usr\11如果validate
方法需要一个MyValueClass
作为它的参数类型,那么必须将参数强制转换到MyValueClass
。时期
if (someObject instanceof A) {
foo((A) someObject);
return;
}
if (someObject instanceof B) {
foo((B) someObject);
return;
}