Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未处理的异常类型:processing.org中的InstanceionException_Java_Processing - Fatal编程技术网

Java 未处理的异常类型:processing.org中的InstanceionException

Java 未处理的异常类型:processing.org中的InstanceionException,java,processing,Java,Processing,我正在尝试从处理内部执行一个简单的Class.newInstance(),但失败了:( 编辑:按照下面的说明,它不起作用的原因是处理将所有内容都包装起来 将代码转换成一个类,使所有声明的类成为内部类 语言规范声明内部类的newInstance() 应传递对容器类的引用,因此在更改 对newInstance调用newInstance(this);它按预期工作 下面的代码示例显示了它在何处抛出实例化异常 Docs说有一个公共构造函数,一切都会很好,但唉 运行处理2.2.1 代码流:它填充了实现接口的

我正在尝试从处理内部执行一个简单的Class.newInstance(),但失败了:(

编辑:按照下面的说明,它不起作用的原因是处理将所有内容都包装起来 将代码转换成一个类,使所有声明的类成为内部类 语言规范声明内部类的newInstance() 应传递对容器类的引用,因此在更改 对newInstance调用newInstance(this);它按预期工作

下面的代码示例显示了它在何处抛出实例化异常

Docs说有一个公共构造函数,一切都会很好,但唉

运行处理2.2.1

代码流:它填充了实现接口的所有类的列表。然后我们遍历state.runnableTypes并尝试(但失败)实例化该类型的新实例

请帮忙

(为笨重的状态变量道歉,这与更笨重的ryo单元测试系统有关;)

状态;
/*它很好地找到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() {
  }
}