java 反射机制
程序在运行的过程中(不是在编写代码阶段)动态的去获取一个对象所属的类型的信息的过程。
反射的根源:Class对象
获得一个Class对象的三种方法:
Class clz=类名.class
Class clz=Class.forName("类的完全限定名")
Student s=new Student();
Class clz=s.getClass()
常用方法:【Class类】
getMethods(); 返回的是超类以及本类中的一些公有的方法构成的Method类型数组。
getDeclaredFields() 返回的是本类中定义的所有的公有以及私有的方法构成的数组。
getMethod(String name, Class<?>... parameterTypes) 获得的是超类或本类中定义的公有的指定方法名的一个Method对象
getDeclaredMethod(String name, Class<?>... parameterTypes) 获得是本类中定义的公有或私有的指定名的一个Method对象
getField(String name)
getFields()
getDeclaredField(String name)
getDeclaredFields()
getConstructor(Class<?>... parameterTypes)
getConstructors()
ava.lang.reflect
所有的反射的API都在该包中。
在一些框架的配置信息中经常会把一些类的完全限定名的信息写在其中,通过反射方式,动态的构建类的对象,比如Android当中的Activity的信息,就是配置在清单文件中。
使用可变参数的时机:
当参数的类型确定,个数不确定时,可以使用可变参数。
使用时注意事项:
1.方法的参数有可变参数,那么可变参数只能放在参数列表的最后。
2.方法中最多只能有一个可变参数,
给可变参数传参数:
1.可以不传参数
2.可以传一个或多个类型相同的参数,参数之间用逗号隔开。
3.可以直接传入一个数组。
4.如果可变参数的类型是引用类型,当传入的是数组时,注意数组元素的实例化。
java 枚举
当某变量的数据的个数可以穷举的时候,可以使用枚举类型。
枚举的定义:
public enum 名称{
值1,值2,值3;
}
枚举默认继承java.lang.Enum类
枚举可以定义方法,但是在方法定义前要创建枚举的实例。
枚举的构造方法只能是私有的。
因为枚举有父类,所以可以进行方法的重写。
枚举虽然不可以继承其他的父类,但是可以实现接口。
支持枚举的集合:EnumSet,EnumMap
程序在运行的过程中(不是在编写代码阶段)动态的去获取一个对象所属的类型的信息的过程。
反射的根源:Class对象
获得一个Class对象的三种方法:
Class clz=类名.class
Class clz=Class.forName("类的完全限定名")
Student s=new Student();
Class clz=s.getClass()
常用方法:【Class类】
getMethods(); 返回的是超类以及本类中的一些公有的方法构成的Method类型数组。
getDeclaredFields() 返回的是本类中定义的所有的公有以及私有的方法构成的数组。
getMethod(String name, Class<?>... parameterTypes) 获得的是超类或本类中定义的公有的指定方法名的一个Method对象
getDeclaredMethod(String name, Class<?>... parameterTypes) 获得是本类中定义的公有或私有的指定名的一个Method对象
getField(String name)
getFields()
getDeclaredField(String name)
getDeclaredFields()
getConstructor(Class<?>... parameterTypes)
getConstructors()
ava.lang.reflect
所有的反射的API都在该包中。
在一些框架的配置信息中经常会把一些类的完全限定名的信息写在其中,通过反射方式,动态的构建类的对象,比如Android当中的Activity的信息,就是配置在清单文件中。
使用可变参数的时机:
当参数的类型确定,个数不确定时,可以使用可变参数。
使用时注意事项:
1.方法的参数有可变参数,那么可变参数只能放在参数列表的最后。
2.方法中最多只能有一个可变参数,
给可变参数传参数:
1.可以不传参数
2.可以传一个或多个类型相同的参数,参数之间用逗号隔开。
3.可以直接传入一个数组。
4.如果可变参数的类型是引用类型,当传入的是数组时,注意数组元素的实例化。
java 枚举
当某变量的数据的个数可以穷举的时候,可以使用枚举类型。
枚举的定义:
public enum 名称{
值1,值2,值3;
}
枚举默认继承java.lang.Enum类
枚举可以定义方法,但是在方法定义前要创建枚举的实例。
枚举的构造方法只能是私有的。
因为枚举有父类,所以可以进行方法的重写。
枚举虽然不可以继承其他的父类,但是可以实现接口。
支持枚举的集合:EnumSet,EnumMap