java——反射

java与C++的区别
java:跨平台,树状结构,Object,接口,反射

反射:底层,抽象,重要,用不着
1、

package chp15;

public class TestReflection {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
           printMethods("java.lang.String");
           printMethods("java.util.HashMap");
           Student s=new Student();
           s.study();
           Object o1=createObject("java.util.ArrayList");
           Object o2=createObject("chp5.Student");

           Object r1=methodInvoke(o1,"size");
           Object r2=methodInvoke(o2,"study");

    }
    //打印className这个类中的所有公开方法
    static void printMethods(String className) throws Exception{
        if(className.equals("java.lang.String")){
            System.out.println("length()");
            System.out.println("intern()");

        }
    }
    //根据类名 创建对象
    static Object createObject(String className) throws Exception{
        return null;
    }
    //根据方法名,调用方法
    static Object methodInvoke(Object o,String methodName) throws Exception{
        return null;
    }
}

核心概念:
类对象:==>Class类的对象
记录了类的信息,类对象是类加载的产物,封装了一个类的所有信息(类名,父类,属性 方法 构造方法 ….)。
类加载说起:JVM保存数据:简单类型或者对象类型
存储了类的信息的对象类型。

两个概念:
1)类对象
2)类的对象

获得类对象的引用
Field 对象
属性信息在:Fild
方法信息:封装在Method
构造方法信息:封装在Construction
java.lang.refection 反射包里的

Method对象:封装了一个方法的信息
getMethods:返回类中所有的公开方法,包括父类中的方法
getDeclaredMethods:返回本类中所有方法,包括非公开的

对象.方法()
1、先找出方法对象
2、对这个方法对象调用方法 m.invoko(o,实参Object…) o是上面对象

反射更通用

jdk5.0:一是泛型,二是标注(与反射有关系)
3、标注:Annotation 描述代码的代码 主要是给机器看的
注释:// /* / /* Javadoc */
传统的注释:描述代码的文字 给人看的

@Override 覆盖

类型:类,接口,枚举,标注 都有.class对应

三种:
标记标注(没有属性) @标注名
单值标注:就一个属性 @标注名(属性名=属性值)(一般都是value)
普通标注(多值标注):@标注名(属性1=值1,属性2=值2…)

特例:对于单值标注,如果属性名为value 。”value=”可以省略
@标注名(value=”Hello”)

关键字:@interface
标注本身是一个接口

hibnate Spring
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值