public class Main {
public static void main(String[] args) {}
}
class OtherClass {
private class Test {}
}
是否可以从类main中的main方法实例化并获得对Test的访问。
当使用反射时,您会发现内部类的构造函数将外部类的实例作为附加参数(总是第一个)。
相关信息请参阅以下问题:
>
实例化内部类
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class OuterClass {
private class InnerClass {
}
public OuterClass() {
super();
}
public static void main(String[] args) {
// instantiate outer class
OuterClass outer = new OuterClass();
// List all available constructors.
// We must use the method getDeclaredConstructors() instead
// of getConstructors() to get also private constructors.
for (Constructor<?> ctor : OuterClass.InnerClass.class
.getDeclaredConstructors()) {
System.out.println(ctor);
}
try {
// Try to get the constructor with the expected signature.
Constructor<InnerClass> ctor = OuterClass.InnerClass.class
.getDeclaredConstructor(OuterClass.class);
// This forces the security manager to allow a call
ctor.setAccessible(true);
// the call
try {
OuterClass.InnerClass inner = ctor.newInstance(outer);
System.out.println(inner);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
问题内容: 是否可以使用Java反射从另一个类实例化私有内部类。例如,如果我采用了这段代码 是否可以实例化并从main类中的main方法获得对Test的访问。 问题答案: 使用反射时,您会发现该内部类的构造函数将外部类的实例作为附加参数(总是第一个)。 例:
我尝试实例化以下Java代码中定义的内部类: 我得到了这个例外: 我错过了什么?
我在使用reflections api的公共类中的私有类中使用私有方法时遇到问题。下面是一个简化的代码示例: 同样,我希望能够实例化一个类对象,然后从私有类调用。我一直试图通过反射来做到这一点,但我似乎无法超过1级。此外,内部类可能有也可能没有大多数代码似乎使用的构造函数。上面的代码只是框架。 我当前的代码: 我查找了各种方法来获取内部类或私有方法,但找不到在不使用构造函数的情况下将外部对象获取到
我不能创建B-Object,但为什么呢? 例外情况是:
问题内容: 假设您有一个文本文件,例如: 您希望相应地更新相应的对象: 凡是不同种类的枚举。 我想有一个通用的方法来实例化枚举值。也就是说,在运行时使用反射,而无需事先知道对象的枚举类型。 我会想到这样的事情: 问题是:应该有什么呢?给定其String表示形式,甚至可以实例化未知枚举吗? 问题答案: 之后不应该被调用-它返回实例的类 你可以投,避免一般性的问题,因为你已经知道的是
问题内容: 我有一个实用程序方法,当从中删除了不相关的逻辑时,简化的方法将如下所示: 问题是,如果是诸如的内部类,则该方法即使是公共方法也将不起作用,因为它将抛出。 有没有办法动态实例化内部类? 问题答案: 如果它是真正的 内部 类而不是 嵌套 (静态)类,则有一个隐式构造函数参数,它是对外部类实例的引用。在那个阶段您不能使用- 必须获得适当的构造函数。这是一个例子: