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