我有类似以下情况:
// In some library code
public class A
{
private class B
{
Object value;
}
}
// In my code
Object o;
// o is initialized to an instance of B somehow
// ...
B bInstance = (B) o;
我将如何将对象强制转换为 B 类型假设 B 的类型不可访问?
更详细地解释一下,A 是not我的代码库的一部分。它是图书馆的一部分。我可以访问一个我知道类型为 B 的对象,但无法转换它(例如在 IDE 中),因为类型信息不可见。这是一个编译错误。情况非常有限。我认为使用反射可能可以实现这一点,但恐怕我没有很多使用该特定范例的经验。有没有办法解决?我感谢社区提供的任何意见。
也许您应该访问一个界面?或者说它也无法访问?
我不知道以下内容是否是您所需要的,但这也许可以帮助您找到解决方法(因为您要求使用反射):
由于您以某种方式拥有 B 实例,您应该尝试:
Class<?> innerClass = o.getClass();
然后如果可能的话,尝试使用反射来获取您需要的东西,如下所示:
Field allFields[] = innerClass.getDeclaredFields();
Constructor<?> constructors[] = innerClass.getDeclaredConstructors();
Method allMethods[] = innerClass.getDeclaredMethods();
constructor.setAccessible(true); sets the constructor accessible.
您可以自己实例化该实例吗?还是使用以某种方式返回的实例很重要?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)