一、Java反射
Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。
RTTI和反射之间的真正区别只在于:
- RTTI,编译器在编译时打开和检查.class文件 | 静态 | (创建使用时已经确定了类型信息)
反射,运行时打开和检查.class文件 | 动态 | (反射机制,在运行时再尝试确定类型信息)
getClass()&.Class
public class ThreadTestCommTwo { /** * @param args */ public static void main(String[] args) { Test a = new Test(); if(a.getClass()==Test.class) {// 这两个输出的是同一个class System.out.println("equal"); } else { System.out.println("unequal"); } System.out.println(a.toString()); System.out.println(a.hashCode()); System.out.println(a.getClass().hashCode()); System.out.println(Test.class.hashCode()); System.out.println(Test.class.getInterfaces()); System.out.println(Test.class.getSuperclass());
Class<?>[] xx = Test.class.getInterfaces();
System.out.println(xx[0]);
} public static class Test implements XXX{ private static final Test test1 = new Test(); private Test(){}; public static Test xx(){ return test1; }
@Override
public Test A() {
return test1;
}
@Override
public Test B() {
return test1;
} }
public interface XXX{
public Test A();
public Test B();
}
}
getClass() & .class 获取的Class类的hashcode
输出接口名称getInterfaces()
二、Spring 控制反转(IOC)& Spring 依赖注入(DI)
转载自:转
三、相关知识点
Spring MVC 请求流程