---------------------- Android开发、java培训、期待与您交流! ----------------------
枚举类: JDK1.5新特性
枚举是一个特殊的类,枚举中的元素相当于类的实例对象,其中可以定义构造方法,成员变量,普通方法和抽象方法。定义构造方法时必须是私有的;
枚举元素必须位于枚举体中的最开始处,枚举元素的后面要有分号与其他成员分隔。
把枚举中的成员方法或成员变量放在枚举元素的前面时,编译器报错;
带方法的枚举: 1.定义枚举 TrafficLamp
2.实现普通的next()方法。
3.实现抽象的next()方法:每个元素分别是由枚举的子类来生成实例对象,这些子类采用类似内部类的方式进行定义。
4.增加表示时间的构造方法。
枚举只有一个成员时,就可以作为一种单例实现方式。
public enum TrafficLamp
{
RED(30)
{
public TrafficLamp nextLamp()
{
return GREEN;
}
},
GREEN(45)
{
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},
YELLOW(5)
{
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
private int time;
private TrafficLan(int time)
{
this.time = time;
}
public abstract TrafficLamp nextLamp();
}
自动装箱与拆箱
Integeri1 = 13; // -128 --127
Integer i2 = 13;
System.out.println(i1 + 12);
享元设计模式 flyweight
有很多个小的对象它们有很多相同的属性,把它们变成一个对象,那些不同的属性,把它们变成方法的参数,称之为外部状态,那些相同的属性称之为对象的内部状态。
可变参数:一个方法接受的参数不固定
1. 只能出现在参数列表的最后。
2. 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
反射机制:Class 类反射会使程序性能下降
java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实例对象来确定,不同的实例对象有着不同的属性值。
java程序中的各个java类,也属于同一类事物,描述这一同类事物的类的名字就是Class.
要注意与小写class关键字的区别。Claa类描述了类的名字,类的访问属性,类说属于的包名,字段名称的列表,方法名称的列表的那个。
Class的实例对象代表内存里面的一段字节码。调用源程序中的类时,首先在硬盘中把类的二进制代码编译成 .class,然后把 .class中的二进制代码加载到内存中,再用这些字节码去创建对象。也可以说字节码就是一个对象。
Class cls = Date.class; //Date类所代表的字节码
Class cls2 = Math.class; //Math类的字节码
p1.getClass(); //p1表示字节码所创建的对象,得到这个对象的类名;
Class.forName(“java.lang.String”); //forName()的作用 :返回到这个类的字节码,
返回字节码方式有两种:
1、这个类已经加载到内存中,可以直接返回这个类的字节码;
2、java虚拟机还没有这个类的字节码,先把这个类加载到内存中,再返回这个类的字节码;
如何获得类的字节码?有3中方法。
1、类名.class
2、对象.getClass(); 例如:new Date().getClass();
3、Class.forName(“类名”); 例如:Class.forName(“java.util.Date”);
9个预定义的Class实例对象:8个基本数据类型和1个void
class cls1 = int.class Class cls2 = void.class; int.class == Integer.TYPE;
数组类型的实例对象:Class.isArray();
总之,只要在源程序中出现的类型,都有各自的Class实例对象,例如:int[],void;
反射就是把java类中的各种成分映射成相应的java类。java类中的各种成分所对应的类Field,Method,Contructor,Package等
构造方法的反射:Constructor类
//new String(new StringBuffer("abc"));
Constructorconstructor = String.class.getConstructor(StringBuffer.class);
String str2 =(String)constructor.newInstance(newStringBuffer("abc"));
System.out.println(str2.charAt(2));
1、 得到某个类的构造方法:获得构造方法时要用到类型;
2、 创建实例对象:调用获得的方法时要用到与获得方法相同类型的实例对象。
3、 Class.newInstance():不带参数的构造方法;
---------------------- Android开发、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net