实习中用的语言是c#,第一次接触到这种语言,然后写的过程中,发觉和Java几乎一摸一样,好像根本是无缝切换,但细节仍有很大的区别,称有空总结一波里面的部分细节实现。
ps. 我写c#过程中,发觉c#有很多优秀的特性,写起来在方便很多,比如lambda,linkq等
1.Lambda VS Delegate
Java底层实现:
1 /** 2 * @Auther: Chang 3 * @Date: 2018/9/2 4 */ 5 public class JavaVsCSharp { 6 public static void main(String[] args) { 7 8 testLambda(() -> System.out.println("Hello World")); 9 } 10 11 private static void testLambda(Print pt) { 12 pt.print(); 13 } 14 } 15 16 @FunctionalInterface 17 interface Print { 18 void print(); 19 }
结果是打印出Hello World
我们对class文件进行反编译试一下,javap -c -p JavaVsCSharp.class

内部动态生成了一个私有的静态方法
1 private static void lambda$main$0() { 2 // 空3 }
然后然后。。。。我就不会调试了。。。。。。网上的调试我没看懂,怎么跑来跑去的(菜是一种罪过)
不过最后最后就生成了一个内部类,和一个内部方法
1 private static void lambda$main$0() { 2 System.out.println("Hello World!!!"); 3 } 4 5 static final class JavaVsCSharp$$Lambda$1 implements Print { 6 private JavaVsCSharp$$Lambda$1() { 7 } 8 9 @Override 10 public void print() { 11 lambda$main$0

