Java 未处理的异常类型:processing.org中的InstanceionException
我正在尝试从处理内部执行一个简单的Class.newInstance(),但失败了:( 编辑:按照下面的说明,它不起作用的原因是处理将所有内容都包装起来 将代码转换成一个类,使所有声明的类成为内部类 语言规范声明内部类的newInstance() 应传递对容器类的引用,因此在更改 对newInstance调用newInstance(this);它按预期工作 下面的代码示例显示了它在何处抛出实例化异常 Docs说有一个公共构造函数,一切都会很好,但唉 运行处理2.2.1 代码流:它填充了实现接口的所有类的列表。然后我们遍历state.runnableTypes并尝试(但失败)实例化该类型的新实例 请帮忙 (为笨重的状态变量道歉,这与更笨重的ryo单元测试系统有关;)Java 未处理的异常类型:processing.org中的InstanceionException,java,processing,Java,Processing,我正在尝试从处理内部执行一个简单的Class.newInstance(),但失败了:( 编辑:按照下面的说明,它不起作用的原因是处理将所有内容都包装起来 将代码转换成一个类,使所有声明的类成为内部类 语言规范声明内部类的newInstance() 应传递对容器类的引用,因此在更改 对newInstance调用newInstance(this);它按预期工作 下面的代码示例显示了它在何处抛出实例化异常 Docs说有一个公共构造函数,一切都会很好,但唉 运行处理2.2.1 代码流:它填充了实现接口的
状态;
/*它很好地找到Wtf类并将其插入到其类数组中,
*但当我尝试实例化一个新的实例时,无论我尝试什么,它都会抛出:(
*/
无效设置(){
大小(1024768,P3D);
noLoop();
//得到所有的课程
状态=新状态();
类[]类型=this.getClass().getDeclaredClasses();
state.allTypes=类型;
//列举浇注料类型
对于(int i=0,l=types.length;i首先,您的代码不会编译,因为您需要在try/catch块中包装newInstance()
函数可以抛出实例化异常
或非法访问异常
,因此您必须捕获这些异常。这就是错误告诉您的
如果您发布一个,您的运气会更好,例如:
void setup() {
try {
Class<Wtf> c = Wtf.class;
IMenuRunnable u = (IMenuRunnable) c.newInstance();
println(u.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
interface IMenuRunnable {}
public class Wtf implements IMenuRunnable{
public Wtf() {
}
}
当然,您将无法访问sketch类的非静态成员,因此您采取的方法实际上取决于您需要执行的操作。能否提供实例化异常的消息?getMessage()为空:(获得了stacktrace,但仅仅凭直觉并没有真正的帮助,但是您可以尝试为(java.lang.reflect.Constructor-ctor:ctors){ctor.setAccessible(true);}循环
,然后尝试c.newInstance()
?是不是实现的3行下面有注释,这也会抛出?@hexafractionNo,目标是在尝试调用newInstance之前使所有构造函数都可访问。可能是第一次调用失败,因为no-arg构造函数不存在或不可访问,其余调用需要您将参数传递给构造函数。先生,您是个天才。添加了您的答案以感谢!
void setup() {
try {
Class<Wtf> c = Wtf.class;
IMenuRunnable u = (IMenuRunnable) c.newInstance();
println(u.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
interface IMenuRunnable {}
public class Wtf implements IMenuRunnable{
public Wtf() {
}
}
void setup() {
try {
Class<?> sketchClass = Class.forName("sketch_150702a");
Class<?> innerClass = Class.forName("sketch_150702a$Wtf");
java.lang.reflect.Constructor constructor = innerClass.getDeclaredConstructor(sketchClass);
IMenuRunnable u = (IMenuRunnable)constructor.newInstance(this);
println(u.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
interface IMenuRunnable {
}
public class Wtf implements IMenuRunnable {
public Wtf() {
}
}
void setup() {
try {
Class<Wtf> c = Wtf.class;
IMenuRunnable u = (IMenuRunnable) c.newInstance();
println(u.toString());
}
catch(Exception e) {
e.printStackTrace();
}
}
interface IMenuRunnable {}
static public class Wtf implements IMenuRunnable{
public Wtf() {
}
}