JAVA泛型、反射、注解、类加载器介绍

[b]一、反射是Java 1.2开始就具有的特性[/b]
Class cla=字节码

Class代表字节码,抽象出代表java所有类的对象,通过Class可以得到类中各个成员
编译java文件到硬盘上class文件(二进制),由类加载器把二进制文件加载到内存中,创建出该对象

基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象
public boolean isPrimitive() 判定指定的 Class 对象是否表示一个基本类型


1.三种方法得到类的字节码
Class cla1=s.getClass();(通过对象)

Class cla2=String.class;(类名.class)

Class cla3=Class.forName("java.lang.String");//[color=red]如果虚拟机中存在该类的字节码则直接查到返回,否则类加载器加载类到虚拟机中,并缓存起来[/color]

2.java反射就是java中各个成分映射成相应的java类,[u]注:反射消耗性能[/u]

3.利用反射构建实例二种方法,Class.newInstance();
Class c=Class.forName("com.hp.bean.Person");

Constructor constructor=c.getConstructor(java.lang.String.class);
Person p=(Person) constructor.newInstance("Austin");
System.out.print(p.getName());

Person p2=(Person) c.newInstance();
System.out.print(p2.getName());


[b]二、泛型[/b]

泛型只是给编译器编译时检查语法结构的,在运行时是去参数化的,所以可以通过反射技术去改变规则,并不像c++做的那么强悍!

使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要作引用,可以调用于参数无关的方法,不能调用与参数有关的方法。
public void test(Collection<?> collection){
//collection.add(1);
collection.size();
}

通配符的扩展<? extends Number>


[b]注解[/b]

jdk自带注解:
@Deprecated
@SuppressWarnings
@Override

声明自己的注解

@Retention(RetentionPolicy.RUNTIME)/*生命周期*/
@Target(ElementType.TYPE)/*目标*/
public @interface HPAnnotation {

}


[b]类加载器[/b]
java类加载成树状结构,采用委托加载机制(顾名思义儿子找爸爸,爸爸找爷爷)

[color=red]BootStarp(最高级加载器) ----- jre/lib/rt.jar

ExtClassLoader ----- jre/lib/ext/*.jar

AppClassLoader ----- classpath指定的所有.jar或目录

MyClassLoader 继承ClassLoader[/color]


通过Connection对象的getMetaData()方法可以得到数据库的元数据
通过ResultSetMetaData rsm=ResultSet().getMetaData()获取此 ResultSet 对象的列的编号、名字、类型和属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值