Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 嵌套函数-处理_Java_Function_Nested_Processing_Void - Fatal编程技术网

Java 嵌套函数-处理

Java 嵌套函数-处理,java,function,nested,processing,void,Java,Function,Nested,Processing,Void,您能在Processing(Java)中构建嵌套函数吗 这个代码不起作用。编译器读取:意外标记:void void keyPressed() { if(click1 = true) { graph(); } if(click2= true) { points(); } void graph() { .... ..

您能在Processing(Java)中构建嵌套函数吗 这个代码不起作用。编译器读取:意外标记:void

void keyPressed() {
         if(click1 = true) {
               graph();
         }
         if(click2= true) {
               points();
         }
         void graph() {
         ....
         ....
         }
 }

不能有嵌套函数。您可以拥有匿名类,例如在新线程中:

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        // This is all in an anonymous Runnable class.
    }
});

就像其他人说的:不,你不能有那样的“本地功能”

您也没有正确地进行布尔比较,因为单个=是赋值,而不是比较。它应该是:

if(click1 == true) {
或者,由于您已经在使用布尔语言,您可以直接参考它:

if(click1) {
无论如何,回到你的问题:你不能做你所说的,但是你可以通过使用匿名类来绕过它。若要使用匿名类,您需要有一个现有类,该类要通过重写其一个或多个函数来扩展,您可以在方法中执行该操作

例如,我们可以通过定义一个定义run()方法的匿名类来实现Runnable接口,然后直接调用该匿名类。看起来是这样的:

void keyPressed() {
         if(click1) {
                  new Runnable(){
                           public void run(){
                                    //do graph stuff here
                           }
                  }.run();
         }
         if(click2) {
                  new Runnable(){
                           public void run(){
                                    //do points stuff here
                           }
                  }.run();
         }
 }
有关匿名内部类的详细信息,请单击此处:


然而,所有这些都有一种非常糟糕的代码味道,这不是任何理智的人都会这样做的。为什么你认为你需要一个本地方法?很可能您应该使用单独的类,或者使用常规的旧顶级方法。

在Java中无法做到这一点。匿名类可能是您所需要的。通常不应该在Processing的回调函数中绘制。在那里使用一个标志并从
draw()
调用绘图。这也适用于处理吗?哦,这是一个Java示例。不过,处理也没有它们。