我有类似以下的情况:
// 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是不是我的代码基础的一部分。 这是一个库的一部分。 我曾访问的对象,我所知道的是B型的,但我不能投它(在IDE中,例如),因为类型的信息是不可见的。 这是一个编译错误。 这种情况是非常严格的。 我认为有可能实现这一目标使用反射,但我恐怕我没有使用特定的范例很多的经验。 有没有办法解决? 我明白任何输入社区会提供。
也许有你应该代替accesing的接口? 或者是inaccesible呢?
我不知道下面是你需要什么,但也许这可以帮助你找到一个解决方法(既然你问了反思的用途):
因为你不知何故有你的乙例如,你应该尝试:
Class<?> innerClass = o.getClass();
然后,如果可能的话,尽量让你需要使用反射像这样:
Field allFields[] = innerClass.getDeclaredFields();
Constructor<?> constructors[] = innerClass.getDeclaredConstructors();
Method allMethods[] = innerClass.getDeclaredMethods();
constructor.setAccessible(true); sets the constructor accessible.
你可以实例自己的实例,或者是它重要的是使用某种方式返回的一个?