zoukankan      html  css  js  c++  java
  • Java零碎总结

    获取当前类运行的根目录(即classpath,如bin、classes、AppName等)的方式有:

    1、Thread.currentThread().getContextClassLoader().getResource("").getPath();(获取根目录下的a.pr文件可以是Thread.currentThread().getContextClassLoader().getResource("a.pr"))

    2、ClassLoader.getSystemClassLoader().getResource("").getPath()

    3、XX.class.getResource("/").getPath(),注意这个要有/,不然它会是XX这个类的包目录而不是classes目录,上面的不能有/否则报错

    注:用System.getProperty("user.dir")的方式对于webapp而言不可取。

    获取webapp的WEB-INF目录可以用:this.getServletContext().getRealPath("/").concat("WEB-INF/")

    获取配置文件可以用:Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties")

    ,注意这个方法不能用来获取如.java文件否则会报错(报错原因最终应该是URLClassPath的内部类的FileLoader在getResource中check时发现.java是不允许的后缀所以产生异常从而return null,用了5个反编译器那部分代码都没有反编译出来),在JDK1.8里貌似已经不报错只是返回null而已。

    getResource(..)获取的可以是目录、普通文件、jar文件,对于普通文件和目录getProtocol()是file;只返回第一个找到的(优先从父加载器路径加载)

    getResources(..)是获取所有加载路径下匹配的文件(从父加载器路径、当前加载器路径加载此文件、目录、jar包等,但不会获取.java)

    4.C#里有静态构造方法,Java里没有静态构造方法而是用静态块实现 static {..}

    5.Java里最好是不要用大写开头的字段名,如FRkid,否则很容易出问题,比如BeanUtils.copyProperties就会无法copy这个属性,如果外部是这个命名,比如客户端那么可以用JSONProperty来指定序列化的字段名,如果是数据库也是有相关注解可以搞定,所以属性就不要弄这种命名方式了;还有一种只有单个小写字母的最好也不要,比如fSid否则用lombok有可能会出问题(lombok在这种情况的字段生成的getter和setter方法是和正常手写的是不一样的);

    6.Java里Optional无法of一个null值,因此无法实现Optional对象是present,但是它里面的值却又是null(用反射实现除外。。),所以没法做到这样的功能在ORM框架里,就是一个字段是Optional如Optional<Integer> prop,我希望它更新null值的时候就of一个null(实际做不到),然后ORM框架判断是present因此设置这个字段为null,而如果我不希望更新null时则直接将prop置为null即可,如果要更新其它非空值则of一个非空值即可。。然而Optional不允许这么做。。(也许ORM框架可以自己搞个允许这么弄的Nullable对象来)【Java8的Optional的isPresent其实就是判断包含的值是否是null。。】;

    7.用javac编译记得是javac -encoding UTF-8 xx.java,不然可能会报错(Windows平台)

  • 相关阅读:
    我的友情链接
    我的友情链接
    BuChain 介绍:视屏讲解
    2019年5月数据库流行度排行:老骥伏枥与青壮图强
    五一4天就背这些Python面试题了,Python面试题No12
    钱包:BUMO 小布口袋 APP 用户手册
    工具箱:BUMO 工具应用场景示例
    工具箱:BUMO 密钥对生成器用户手册
    开发指南:BUMO 智能合约 Java 开发指南
    钱包:BOMO 轻钱包用户手册
  • 原文地址:https://www.cnblogs.com/silentdoer/p/8127558.html
Copyright © 2011-2022 走看看