lombok深入实践
官网视频官网地址:https://projectlombok.org
Project Lombok is a java library that automatically plugs into your editor and build tools,spicing up your java. 翻译:
特征列表val
注意事项:
实例代码:不适用lombok; package com.springpractice._val; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * Hello world! */ public class App { public String test1() { final ArrayList<String> exampleList = new ArrayList<>(); exampleList.add("hello world"); final String firstElement = exampleList.get(0); final String returnString = firstElement.toLowerCase(); System.out.println(returnString); return returnString; } public void test2() { final HashMap<Integer,String> map = new HashMap<>(); map.put(0,"zero"); map.put(5,"five"); for (final Map.Entry<Integer,String> entry : map.entrySet()) { System.out.printf("%d: %s n",entry.getKey(),entry.getValue()); } } public static void main(String[] args) { final App app = new App(); app.test1(); System.out.println("======"); app.test2(); } } 使用lombok ; package com.springpractice._val; import lombok.val; import java.util.ArrayList; import java.util.HashMap; /** * Hello world! */ public class AppLombok { //不能使用在类的成员变量上,会报编译错误 // val String name; public String test1() { val exampleList = new ArrayList<String>(); exampleList.add("hello world"); val firstElement = exampleList.get(0); final String returnString = firstElement.toLowerCase(); System.out.println(returnString); return returnString; } public void test2() { val map = new HashMap<Integer,String>(); map.put(0,"five"); for (val entry : map.entrySet()) { System.out.printf("%d: %s n",entry.getValue()); } } public static void main(String[] args) { final AppLombok app = new AppLombok(); app.test1(); System.out.println("======"); app.test2(); } } var
package com.springpractice._var; import lombok.var; import java.awt.*; /** * 说明:var的使用 * @author carter * 创建时间: 2019年10月10日 20:08 **/ public class App { public static void main(String[] args) { var x = "Hello"; //编译报错,类型是String // x=1; var y = Color.RED; // y=x; //var的类型如果是object,则不是它的使用场景 var z = new Object(); z = x; System.out.println(x); } } NonNull
不使用lombok; package com.springpractice.nonnull; import lombok.NonNull; import java.util.Objects; /** * 说明:TODO * @author carter * 创建时间: 2019年10月10日 20:16 **/ public class App extends Something{ private String name; public App(Person person){ super("Hello"); if (Objects.isNull(person)){ throw new NullPointerException("person is marked @NonNull but is null"); } this.name = person.getName(); } public static void main(String[] args) { new App(null); } } 使用lombok; package com.springpractice.nonnull; import lombok.NonNull; /** * 说明:TODO * @author carter * 创建时间: 2019年10月10日 20:20 **/ public class AppLombok extends Something { private String name; public AppLombok(@NonNull Person person){ super("Hello"); this.name = person.getName(); } public static void main(String[] args) { new AppLombok(null); } } 效果一样: /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/tools.jar:/Users/lifesense-szyf01/src/git/github/springbootpractice/lombok-demo/target/classes:/Users/lifesense-szyf01/.m2/repository/org/projectlombok/lombok/1.18.8/lombok-1.18.8.jar com.springpractice.nonnull.AppLombok Exception in thread "main" java.lang.NullPointerException: person is marked non-null but is null at com.springpractice.nonnull.AppLombok.<init>(AppLombok.java:15) at com.springpractice.nonnull.AppLombok.main(AppLombok.java:21) Process finished with exit code 1 代码路径: [email?protected]:carterbrother/springbootpractice.git/lombok-demo
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |