当我尝试使用声明标签打印返回int的方法时,通常使用scriplets和expression标签可以打印该方法。
<%! int print(int i, int j, int k) {
return i + j + k;
}%>
<%= print(10, 20, 30)%>
<% out.print(print(10, 20, 300));%>
但是当我尝试使用相同的标签打印void返回方法时,我收到编译错误。
<%! void print(int i, int j, int k) {
System.out.print(i + j + k);
}%>
<%= print(10, 20, 30)%>
<% print(10, 20, 300);%>
...
C:\Users\dilin\Documents\NetBeansProjects\Practice\build\generated\src\org\apache\jsp\index_jsp.java:60: error: 'void' type not allowed here
out.print( print(10, 20, 30));
^1 error
这是因为void方法不能作为打印输出吗?
我是网络开发的新手。所以请耐心等待。谢谢。
答案 0 :(得分:0)
当你写out.print()时,它期望一些返回值。但是你的方法写成无效。这就是为什么它会给你错误
答案 1 :(得分:0)
这很简单。在您的scriptlet中,您在没有参数的情况下调用java.io.PrintStream#print
方法。因此,编译器会给您一个错误。
请参阅Java docs。虽然print
中有PrintStream
方法的几个重载变体,但它们都不是无参数重载。您的自定义print
方法返回void
,因此您无法将其传递给接受参数的方法。
在旁注中,强烈建议不要使用scriptlet,因为它们可能会使您的应用程序容易受到安全威胁。