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是正确的,因为我没想到返回值.
唯一的区别
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)
...因为虽然你可以指定一个返回函数的结果boolean的boolean变量,你不具备对.如果您愿意,可以忽略返回值.(通常这不是好习惯,但有时也没关系.)
我认为void对应于Visual Basic中的sub,而boolean对应于一个函数.
松散地说,是的.void表示该函数没有返回值,如SubVB中所示.别的(boolean,int,Foo,等等)表示A)该函数具有一个返回值,以及B)它是给定类型的.这就像Function在VB中一样.