将对象转换为类类型

时间:2018-06-18 12:29:56

标签: 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); //Failing

这里验证函数不接受参数作为Object,它将接受作为类的类型(className)

boolean validate(MyValueClass req){
} 

如何将Object转换为MyValueClass?

1 个答案:

答案 0 :(得分:1)

首先,您必须了解强制转换并决定选择哪种重载方法...在编译时发生。与多态性相反,重载在编译时决定。

因此,给定一组固定的,已知的“目标”类,instanceof的以下级联,看起来很丑陋,可以解决:

if (someObject instanceof A) {
  foo((A) someObject);
  return;
} 
if (someObject instanceof B) {
  foo((B) someObject);
  return;
} 

请注意:这里没有使用反射“解决”。反射在运行时开始,如上所述,您需要编译时的所有信息。

如果有的话,您将不得不退后一步,看看是否有办法将重载方法变为多态。