----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
反射的基石--》Class类
java程序中的各个Java类属于同一类事物,描述这些事物的类名就是Class
Class.forName()的作用,返回一个字节码文件,1.这个字节码已经加载过,2,没有加载过,用java虚拟机的列加载器加载,放在缓存里
如何得到各个字节码对应的实例对象(Class 类型);
类名.class 例如,System.class
对象.getClass(),例如,new Date.GetClass()
Class.forName("类名");
反射就是把java类中的各种成分映射成相应的java类
Constructor类 得到一个构造方法
field类 代表一个字段
Arraylist> }
}
javaBean的理解,javjavaaBean就是一种特殊的java类,只要用于传递数据信息,可以将这些信息封装到一个javaBean中,
这种JavaBean的实例对象通常称之为值对象(Value Object ,简称VO),这些信息在类中用私有字段来存储,
Beanutils工具包
JDK1.5的新特性----》注解
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,
javac 编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,
就去干相应的事,标记可以加载包,类,字段,方法,方法的参数以及局部变量上。
看java.lang包,可看到JDK中提供的最基本的annotation
元注解:注解的注解就是元注解
元数据:数据的数据
元信息:信息的信息
RetetionPolicy.RUNTIME;分别对应:java源文件——>class文件---》内存中的字节码
思考:
泛型:
泛型是个编译器看的
参数化类型与原始类型的兼容性:
参数化类型可以引用一个原始类型的对象,编译报告警告,例如:
Collection<String>> 原始类型可以引用一个参数化类型的对象,编译报告警告,例如,
Collection>
Vector> Vector<Object> v = v1; //报错
泛型中的?通配符
总结:
使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要作引用,可以调用
与参数化无关的方法,不能调用与参数化有关的方法。
泛型的类型,只能是引用类型,不能是基本数据类型,例如:
Score<int> 错误
Score<Integer> 正确
当一个变量被声明为泛型时,只能被实例变量和方法调用(还有内嵌类型)
而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的,,
所以静态成员不应该有类级别的类型参数
类加载器:
把硬盘上的.class文件加载到内存中来, java虚拟机中可以安装多个类加载器,系统
默认三个主要类加载器,每个类负责加载特定位置的类:
BootStrap,ExtClassLoader,AppClassLoader
类加载器也是java类,因为其他事java类的类加载器本身也要被类加载器加载,xianr
必须有第一个类加载器不是不是java类,这正是BootStrap
StringBuilder 和StringBuffer 的区别?
在功能方面基本上是一样的,但是StringBuilder 是非线程安全的,StringBuffer是线程安全的,在多线程下选择Stringbuffer
在单线程下选择stringbuilder
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------