Java与c#的一些细节区别

 实习中用的语言是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
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信