JAVA - void和boolean方法有什么区别?

mos*_*r67 -5 java methods boolean void

我是JAVA的新手.我正在JAVA中编写一个包装库,以便使用类似Basic的语言提供一些函数.

当我注意到一些代码没有在JAVA库中执行时我得到了库存,尽管编译器没有抱怨(使用Eclipse).我最后通过替换代码解决了它,如下所示:

public void VideoQuality(int vQuality) //did not work 
Run Code Online (Sandbox Code Playgroud)

public boolean VideoQuality(int vQuality) //works
Run Code Online (Sandbox Code Playgroud)

以下是完整的代码片段:

 public void VideoQuality(int vQuality) //did not work
        {if (vQuality==16) {
            vidQuality=16;
            }
            else if (vQuality==-16)  {
                vidQuality=-16;
            }
            else if (vQuality==0)  {
                vidQuality=0;
            }
            else
                vidQuality=-16;
        vitamioExt.setVideoQuality(vidQuality);
         }  

public boolean VideoQuality(int vQuality) //works
        {if (vQuality==16) {
            vidQuality=16;
            }
            else if (vQuality==-16)  {
                vidQuality=-16;
            }
            else if (vQuality==0)  {
                vidQuality=0;
            }
            else
                vidQuality=-16;
        vitamioExt.setVideoQuality(vidQuality);
        return true;
          }  
Run Code Online (Sandbox Code Playgroud)

我认为void对应于Visual Basic中的sub,而boolean对应于一个函数.

我发现奇怪的是,以下代码使用void工作

public void setVolume(float leftVolume,float rightVolume)
      {
          vitamioExt.setVolume(leftVolume, rightVolume);
      }
Run Code Online (Sandbox Code Playgroud)

我肯定错过了一些非常明显的东西,但我不明白为什么在布尔代码工作时void -code不起作用.

也许这取决于我如何调用代码?

谁可以点灯?

编辑:澄清什么不起作用,我的意思是代码:

vitamioExt.setVideoQuality(vidQuality);
Run Code Online (Sandbox Code Playgroud)

没有在void-snippet中执行.

EDIT2:vidQuality在代码的不同部分声明.我刚刚发布了片段,因为那些问题和变量都在运行.

编辑3:最后,我想我必须错误地调用void-snippet,尽管编译器没有编译.在任何一种情况下,两个片段都应该执行,虽然当然void-snippet是正确的,因为我没想到返回值.

T.J*_*der 8

唯一的区别

public void VideoQuality(int vQuality)
Run Code Online (Sandbox Code Playgroud)

public boolean VideoQuality(int vQuality)
Run Code Online (Sandbox Code Playgroud)

是前者不返回值,后者确实(特别是boolean值).这是差异的全部程度.

这意味着,例如,使用以下void版本VideoQuality:

boolean x = VideoQuality(10); // Will not compile
VideoQuality(10);             // Will compile
Run Code Online (Sandbox Code Playgroud)

...因为您无法将void函数的结果赋给变量.

如果你使用的boolean版本VideoQuality:

boolean x = VideoQuality(10); // Will compile
VideoQuality(10);             // Will compile
Run Code Online (Sandbox Code Playgroud)

...因为虽然你可以指定一个返回函数的结果booleanboolean变量,你不具备对.如果您愿意,可以忽略返回值.(通常这不是好习惯,但有时也没关系.)

我认为void对应于Visual Basic中的sub,而boolean对应于一个函数.

松散地说,是的.void表示该函数没有返回值,如SubVB中所示.别的(boolean,int,Foo,等等)表示A)该函数具有一个返回值,以及B)它是给定类型的.这就像Function在VB中一样.