Java编程思想之类型信息小结 _JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java编程思想之类型信息小结

Java编程思想之类型信息小结

 2012/6/18 16:28:06  aimuyou  程序员俱乐部  我要评论(0)
  • 摘要:1.使用RTTI解决多态中的问题--知道某个泛化引用的确切类型2.Java中的类加载是动态加载的,“当程序创建第一个对类的静态成员的引用时,就会加载这个类”,“使用new操作符创建类的新对象也会被当做对类的静态成员的引用”。类加载是就会执行static初始化,即为static变量赋值和执行static程序块。另,JDBC中用到的Class.forName("XXXX")就是为了加载类,使用.class不会引发初始化。3.staticfinal的编译期常量无需类初始化就可以读取,但如果不是常量
  • 标签:Java 编程
1.使用RTTI解决多态中的问题--知道某个泛化引用的确切类型
2.Java中的类加载是动态加载的,“当程序创建第一个对类的静态成员的引用时,就会加载这个类”,“使用newcaozuofu.html" target="_blank">操作符创建类的新对象也会被当做对类的静态成员的引用”。类加载是就会执行static初始化,即为static变量赋值和执行static程序块。另,JDBC中用到的Class.forName("XXXX")就是为了加载类,使用.class不会引发初始化。
3.static final的编译期常量无需类初始化就可以读取,但如果不是常量,则需要类先初始化。
4.使用Class类的引用可以获取某个类的信息,其中需要注意的:
    a)newInstance()方法实现了“虚拟构造器”,但类必须要有无参构造器(可以不是默认的)。
    b)泛化Class引用中,Class<?>优于平凡的Class;Class<? extends XXXX>或Class<? super XXXX>可以强制类型检查;使用.getSuperclass()方法获取的超类后使用.newInstance()的返回值只是Object类型。
    c)转型前的检查,可以使用关键字instanceof,如:if(x instanceof Dog) ...,Class的isInsance()方法有同样效果,但后者的Class类型可以使用变量,而前者只能写死。
    d)类型检查时,使用==或.equals()方法只能判断类型是否相同,但使用instanceof或isInstance()则包含了继承关系。
5.动态代理,使用静态方法Proxy.newProxyInstance()可以创建动态代理的实例,三个参数分别为:类加载器、期望代理实现的接口列表、InvocationHandler接口的一个实现。在第三个参数中,可以实现方法过滤(使用代理的好处之一吧,感觉像是代理在操控情报。。。腹黑一下),也可以实现事务。
6.反射可以违反访问权限进行操作。
发表评论
用户名: 匿名