.NET转JAVA曲折之路

.NET转JAVA曲折之路

响应国家号召,让软件适应国产化系统,我们被迫走上了这条坎坷大路。

道路崎岖,但挺有意思,从拿来主义到主动思考,这是一个质的转变。

我们花了更多时间用来思考,而不是copy。

                                                                                               --by zh

常态

  • 函数名首字母改小写
  • 属性操作需要通过get、set函数
  • .net扩展方法改为静态函数
  • 时间函数更改
  • Lambda表达式翻译
  • 解决各种注解相关的问题

一些问题

  1. Meaven是你入门时应该关注的

    项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
    
  1. 不存在非必传参数,推荐更多的使用重载特性
  1. 不支持静态函数this扩展方法
  1. Lambda表达式使用方式和函数差异较大

    //所有操作基于流stream(),其他请查看教程。
    Select  -> map
    Where   -> filter
    ToList  -> collect(Collectors.toList())
    ToArray -> toArray(String[]::new))
    GroupBy -> collect(Collectors.groupingBy(Student::getCode));
    OrderBy -> sorted(Comparator.comparing(FieldOperation::getSort).reversed())
    
  1. lambda表达式的一种简写

    //双冒号运算操作符是类方法的句柄,lambda表达式的一种简写  
    //方法调用
    person -> person.getAge();
    //可以替换成
    Person::getAge
    
    x -> System.out.println(x)
    //可以替换成
    System.out::println
    
  1. Lambda函数式编程

    //常用
    Supplier<String> test = ()->"";
    Function<String, Apple> biLambda = (color) -> new Apple(color);
    BiFunction<String, Integer, Apple> biLambda = (color, height) -> new Apple(color, height);
    
  1. 枚举定义不同

    Java 为枚举类型提供了一些内置的方法,同时枚举常量也可以有自己的方法。

  1. lambda 表达式中使用的变量应为 final 或有效 final

    该表变量属性或通过装箱方式通过编译
    Object[] lambda_para = new Object[]{itemList};
    HashMap<String, Object> para = new HashMap<>();
    
  1. 没有as、is等关键字

    //验证类型用instanceof。
    obj instanceof class
    
  1. 不存在var匿名类型,foreach需指定对象

    for (int x : arr) {}
    
  1. 存在主动异常需要在函数上申明或捕获

    void name() throws Exception {}
    
  1. 代码注释、代码折叠

    //行注释
    
    /**
    * 多行注释
    */
    
    //region 代码折叠
    //endregion
    
  1. JSON对象区别

    无JObject,使用第三方JSONObject(阿里)
    
  1. 字典类型不同

    Dictionary ->  HashMap
    
  1. 生成随机数

    //生成 [m,n] 的数字
    int i1 = random.nextInt() * (n-m+1)+m;
    
  1. 去掉.NET语法糖

    @、$、()=>{}、var、as、is
    
  1. 事务被springboot统一管理

    默认不需要单独操作

  1. 区分异常处理

    checked 异常 和 RuntimeException
    检查异常  : 编译时被检测的异常 (throw后,方法有能力处理就try-catch处理,没能力处理就必须throws)。编译不通过,检查语法(其实就是throw和throws的配套使用)。
    运行时异常 : 编译时不被检查的异常(运行时异常。RuntimeException及其子类)。编译通过。
    
  1. 判断逻辑中的误区

    equals是判断两个变量或者实例指向同一个内存空间的值是不是相同
    而==是判断两个变量或者实例是不是指向同一个内存空间
    尽量使用equals()!!!
    
  1. int、Integer傻傻分不清楚

    Integer是int的包装类;int是基本数据类型;
    Integer变量必须实例化后才能使用;int变量不需要;
    Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
    Integer的默认值是null;int的默认值是0。
    
  1. ★注解-@Autowired中注入静态方法或者静态变量

    注意:用static去定义一个注入的方法或者配置文件值变量,编译时不会有任何异常,运行时会报空指针。
    通过非静态的setter方法注入静态变量 ,我们可以改成这样就静态变量可以获取到你配置的信息了。
    private static OSSConfMapper ossConfMapper;
    @Autowired
    public  void setOssConfMapper(OSSConfMapper ossConfMapper) {
        UploadUtil.ossConfMapper = ossConfMapper;
    }
    
  1. ★注解-@Autowired 注入为null 的介绍与解决方式

    可能存在的原因:
    (1)该类没有托管给spring 管理,一般在类的上面添加@Component
    (2)你的这个类有被new出来的实例的,new 过的对象不会交给Spring容器管理 所以里面的 service或者dao注入不进来。一般是指引用某些框架,你是继承某个接口,但是这些框架默认new过这个方法,比如MVC拦截的HandlerInterceptor类。
    +@Component
    
  1. mybatis与ibatis参数区别

    mybatis:#{para}、${para}
    ibatis :#para#、$para$
    
  1. ★奇葩-java.lang.NoSuchMethodException

    在这个实体类里面有一个属性出问题了;(或者序列化失败问题)
    解决方法:在实体类中添加无参构造函数
    注意:存在含参构造函数,则必需手动添加无参构造函数
    
  1. mybatis获取自定义列表

    Dao.ExecuteQueryForObject   //获取对象(获取列表异常)
    Dao.ExecuteQueryForList     //获取列表
    select.resultType=java.util.Map //返回列表(Object只会获取首列)
    <select id=""  parameterType="java.util.Map" resultType="java.util.Map">
        ...
    </select>
    
  1. 【打包】解决 maven多moudle项目 多个root问题

    maven多moudle项目 父pom没有子moudle 就会出现多root目录
    
  1. maven 依赖规则&版本锁定(待测试)

    maven调节原则:
    1.谁先定义的用谁的传递依赖 
    2.直接依赖优先级大于传递依赖
    排除依赖(将不需要的传递依赖的包去除掉) 标签<exclusions>
    
  1. JSONArray JSONObject 转换时出错

    java.lang.reflect.InvocationTargetException
    
    在开发中经常会遇到把一个对象转换成JSON时提示转换错误,这个原因一般是JSONArray或JSONObject无法正常转换对象中的类型造成的,这个时候可以考虑把实体类中的所有属性名称打出来进行观察,如果发现有不是常规的类型就必须指定转换。
    
  1. Stopping service [Tomcat] 错误自查

    1.调整日志级别为debug
    2.检查 “CONDITIONS EVALUATION REPORT” 行以上日志
    3.示例:connection timed out(Redis无法连接,框架启动失败)
    

学习教程

授人以渔

受一些大神影响,我自己也对此深有体会:

每个人认知水平的不同、表达方式的差异,都会对知识的传播产生残缺,甚至错误的结果。

所以,本块内容才是你学习的重点,学习别人的学习途径,而不是结果。

IDEA

https://www.jetbrains.com/idea/

IDEA使用Maven

https://blog.csdn.net/qq_42662759/article/details/116382333

java正则

https://www.cnblogs.com/xyou/p/7427779.html

https://www.cnblogs.com/perl6/p/7220209.html

java8-lambda

https://www.runoob.com/java/java8-lambda-expressions.html

https://www.cnblogs.com/franson-2016/p/5593080.html

https://www.cnblogs.com/JonnyJiang-zh/p/13702842.html

https://blog.csdn.net/exodus3/article/details/90511500

lambda操作List

https://blog.csdn.net/fzy629442466/article/details/84629422

https://www.cnblogs.com/yelanggu/p/13508195.html

https://blog.csdn.net/qq_39080512/article/details/105539979

https://blog.csdn.net/weixin_30764137/article/details/97982814

https://blog.csdn.net/qq_34996727/article/details/94472999

**★Lambda函数式编程 **

https://blog.csdn.net/rongtaoup/article/details/97617173

Java枚举详解

https://blog.csdn.net/qq_35385687/article/details/90147104

类型判断

https://www.cnblogs.com/felordcn/p/13796202.html

Java 中 JSON 的使用

https://www.runoob.com/w3cnote/java-json-instro.html

java之HashMap讲解

https://www.cnblogs.com/benwu/articles/7749779.html

时间处理

https://www.cnblogs.com/shuilangyizu/p/6902643.html

https://blog.csdn.net/lz199719/article/details/81261336

checked 异常 和 RuntimeException

https://blog.csdn.net/qq_18505715/article/details/76696439

浅谈Java中equals()和==的区别

https://blog.csdn.net/qq_38162448/article/details/81611894

https://www.cnblogs.com/tinyphp/p/3768214.html

Java基础之int和Integer有什么区别

https://blog.csdn.net/chenliguan/article/details/53888018

★注解相关

https://www.cnblogs.com/huanghongbo/p/10890025.html

https://blog.csdn.net/wcy18818429914/article/details/106858974/

依赖相关

https://www.cnblogs.com/songcuiting/p/8783750.html

https://www.jianshu.com/p/e29633d12c19

JSONArray JSONObject 转换时出错

https://www.iteye.com/blog/piranha-1973852

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容