`
wzl454823
  • 浏览: 40099 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

第五章

 
阅读更多
第五章.

5.4对象包装器

Integer类对应基本类型int,这些类称为包装器(wrapper).

包装器包括:Integer,Long,Float,Double,Short,Byte,Character,Void和Boolean,前六个派生于公共的超类Number.

对象包装类是不可变的.是final,不能定义子类.

ArrayList<Integer>.<>中只能是包装器类.

ArrayList<Integer> list = new ArrayList<Integer>();list.add(3) == list.add(new Integer(3));称之为自动打包.int i = list.get(i);称之为自动拆包.

比较包装对象的时候要用equals.

5.5参数数量可变的方法

public static double max(double ... values)

max(1.2,2.1,2.3),可以传入多个值。编译器将new double[]{}传入max方法。

5.7反射

反射机制:

在运行中分析类的能力,在运行中查看类的对象,实现数组的操作代码,利用Method对象。

Class类,getClass返回一个Class类型的实例,Class中有很多方法,getName为最常用的一个,返回类的名字。

Field[] getFields()返回一个包含Field对象的数组,记录了这个类或者超类的公有域。

Field[] getDeclareFields()返回全部域。

Method[] getMethods()返回所有的公有方法,包括从超类继承来的方法。

Method[] getDeclareMethods()返回类或接口的全部方法不包括从超类继承的。

Constructor[] getConstructors()返回公有构造方法

Constructor[] getDeclareConstructors()返回所有构造方法

利用改写泛型数组的代码解释反射。

利用array类中的newInstance方法。

Object newArray = Array.newInstance(componentType,newLength)

Class componenType = a.getClass().getComponentType()//确定数组类型

newLength是新数组的长度。

继承设计的技巧

1.将公共操作和域放在超类。

2.不要使用受保护类,不要使用protected。

3.使用继承实现is-a关系,判断是否属于is-a关系,不要胡乱使用继承。

4.除非所有继承的方法都有意义,否则不要使用继承。

5.在覆盖方法时,不要改变预期的行动。在覆盖方法时不要偏离最初的目的。

6.使用多态,而非类型信息。

7.不要过多的使用反射。


第五章结束。

2011.0124   晚 johnny



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics