1.出错的地方:
想要使用Lambda表达式时打印提示信息“Lambda表达式输出:”,使用了“+”进行连接,但是会有错误提示:
Operator ‘+’ cannot be applied to ‘java.lang.String’, 'void(即不能使用“+”进行连接)
2.出错的原因:
“+”前是一个字符串,而“+”后调用的方法的返回值类型是void,不能够相加
3.改正:
应该将普通类中的方法printUpperCase的返回值类型修改为String,并且返回一个字符串。
package Example27;
//类名引用普通方法
//定义了一个接口Printable
public interface Printable {
void print(StringUtils su,String str);
}
//定义了一个普通类StringUtils
public class StringUtils {
public String printUpperCase(String str){
return str.toUpperCase();
}
}
//定义测试类
public class Example27 {
public static void printUpper(StringUtils su,String text,Printable pt){
pt.print(su,text);
}
public static void main(String[] args) {
//使用匿名内部类
printUpper(new StringUtils(), "hello", new Printable() {
@Override
public void print(StringUtils su, String str) {
System.out.println("匿名内部类输出:" + str.toUpperCase());
}
});
//使用Lambda表达式
printUpper(new StringUtils(),"apple",(su,t) ->
{
**System.out.println("Lambda表达式输出:"+su.printUpperCase(t));
});**
}
}