Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象转换为类类型_Java_Class_Casting - Fatal编程技术网

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;
}