package lambda;
interface Animal{
void shout();
}
public class Lambda1 {
public static void main(String[] args) {
String name = "小花";
//使用java中Lambda表达式,无参数,单表达式语句。
animalshout(()->System.out.println("Lambda表达式输出:"+name+"喵喵。。。"));
}
//创建一个animalShout()静态方法,接收接口类型参数
public static void animalshout(Animal an) {
an.shout();
}
}
在使用jdk1.8.0-151时出现的错误,本来在java8.0版本中,增加的新特性应该是, 局部内部类、匿名内部类可以访问到非final的局部变量,增加了lambda表达式的,但是我之前使用jdk1.8.0-151,应该是旧版本,虽然是1.8.0,但还没有更新新特性,所以输出lambda时总是出现多个语法错误,面对这种情况,读者应该去Java官网中使用卸载工具取出旧版本,直接安装最新的jdk版本,第二步在Eclipse编译器中更改自己的jdk版本,由于新版的JDK9,11,13,17没有JRE,所以无法在Eclipse中自主更改JRE,本人愚钝,没有更改成功,选择卸载重装Eclipse的操作。(77条消息) eclipse更换jdk版本_zeal9s的博客-CSDN博客_eclipsejdk版本切换zhttps://blog.csdn.net/zeal9s/article/details/85090545
这是另一位博主的文章,可以看。
接下来是我在为解决这个问题时跌跌撞撞找到答案走过的心酸路,同时学到了很多知识,已经解决问题的伙伴可以离开了
自学者的确很难受,我在使用Eclipse时,通过Java基础入门这本书一直学到了匿名内部类和Lambda表达式的部分,其中8.0版本之后增加了局部内部类和匿名内部类访问局部变量时,不必再在局部变量前加final修饰,增加了lambda表达式这个新特性。
//定义动物类接口
interface Animal{
void shout();
}
public class Example{
public static void main(String[] args){
String name = "小花" ;
/**
*在jdk8.0版本之前,
*局部内部类,和匿名内部类在访问局部变量时,必须在局部变量前加上final修饰,否则错误
*例如,应改为final String name;
*/
animalShout(Animal(){
public void shout(){
System.out.println("匿名内部类输出:"+name+"喵喵。。");
}
});
//使用Lambda表达式作为参数传递给animalShout方法,jdk8.0版本之前会提示lambda表达式有多个语法错误
animalShou(()->System.out.println("Lambda表达式输出:"+name+"喵喵。。"));
}
//创建一个animalShout的静态方法,接收Animal接口类型的参数an
//必须让匿名内部类和lambda表达式使用的方法名和下面的静态方法名相同,使用相同的接口类型的参数
//这样才算完成了接口内抽象方法的具体化,
public static void animalShout(Animal an){
an.shout();
}
使用jdk1.8.0.151的我,Eclipse提示我在局部变量前添加final,提示lambda表达式错误,在多次更改代码后还是错误,于是我对照书发现这种错误由版本引起,我查阅了java官网上jdk8.0版本新增加的特性,最后认为时这个版本的问题,于是卸载掉重新安装最新的版本,在多次操作修改eclipse使用的jdk版本失败后,狠心卸载重装,重装后一切正常。
在重装的过程中,我学到了symdm.cpl可以打开系统属性,找到环境变量和路径。
我学到cd [文件路径],可以打开对应文件#中括号是要去掉的,文件路径就是你打开文件管理器,上方搜索栏里显示的一串英文字符和/组成的字符串。
我学到cd ..可以返回父目录,例如我们通过win + r 进入运行 ,输入cmd进入命令提示符后,首先进入的就是C:\Users\Win10>,你可以输入cd .. 返回到C:\Users\> ,如果你想进入d盘,直接输入 D:就好,想打开d盘中的某个文件,就输入cd [文件路径] //注意,不要把中括号也输入进去。
我学到使用命令行工具来编译并运行Java程序
我可以进入命令提示符之后,找到我们编写的java程序,例如,我通过记事本输入了一个Java程序,怎么使用记事本运行java程序? 新建一个记事本,然后将记事本的后缀改为“.java”,使用记事本的方式打开,输入java程序代码,按“win+R”快捷键键打开运行,输入“cmd”,输入“D:”,按“Enter”,再输入“cd Desktop”进去Desktop文件夹,再输入“javac Test.java”,按“Enter”键,再输入“java Test”,按“Enter”键。注意:在Windows环境中,如果使用Notepad编辑Test.java,实际上会把它保存为Test.java.txt,如果采用是默认的Windows设置,记事本会隐藏.txt扩展名,你需要在保存时将下方的文件类型改为所有文件,文件名后缀依旧加上.java就成功生成java源程序了。
https://jingyan.baidu.com/article/f71d603746984a5bb641d1e9.html
这是其他up用记事本写java源程序的教程,一定要注意!保存文件类型要选择所有文件类型!!!
javac命令是将源程序改为class字节码文件。java命令是将class字节码文件解释执行的。
学完如何从命令行编译和运行一个java程序后,我兴致冲冲的开始运行eclipse,试着打印一串最简单的"你好世界",却发现,2022年6月份的eclipse居然不能输出中文了。
我想到这是编码格式的问题,UTF-8是自带的格式,你需要更改为GBK格式,无需大小写,
(77条消息) Eclipse设置编码格式_初尘19的博客-CSDN博客_eclipse 编码
谢谢观看
为了解决一个普通的lambda表达式的问题,我居然稀里糊涂的学到这么多小知识!这就是非专业者学习java的痛苦,没有一个好的老师教导,像我只能学到哪里是哪里,如果身边由专业的大拿可能我一分钟就解决问题了。但很可惜没有,如果你也是小白,可以关注我一下,也许我们在野蛮成长的过程中也会遇到同样的问题。
谢谢观看