一、反射是Java 1.2开始就具有的特性
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");//
如果虚拟机中存在该类的字节码则直接查到返回,否则类加载器加载类到虚拟机中,并缓存起来
2.java反射就是java中各个成分映射成相应的java类,
注:反射消耗性能
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());
二、泛型
泛型只是给编译器编译时检查语法结构的,在运行时是去参数化的,所以可以通过反射技术去改变规则,并不像c++做的那么强悍!
使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要作引用,可以调用于参数无关的方法,不能调用与参数有关的方法。
public void test(Collection<?> collection){
//collection.add(1);
collection.size();
}
通配符的扩展<? extends Number>
注解
jdk自带注解:
@Deprecated
@SuppressWarnings
@Override
声明自己的注解
@Retention(RetentionPolicy.RUNTIME)/*生命周期*/
@Target(ElementType.TYPE)/*目标*/
public @interface HPAnnotation {
}
类加载器
java类加载成树状结构,采用委托加载机制(顾名思义儿子找爸爸,爸爸找爷爷)
BootStarp(最高级加载器) ----- jre/lib/rt.jar
ExtClassLoader ----- jre/lib/ext/*.jar
AppClassLoader ----- classpath指定的所有.jar或目录
MyClassLoader 继承ClassLoader
通过Connection对象的getMetaData()方法可以得到数据库的元数据
通过ResultSetMetaData rsm=ResultSet().getMetaData()获取此 ResultSet 对象的列的编号、名字、类型和属性
分享到:
相关推荐
在Java编程领域,反射、泛型和注解是三个非常重要的特性,它们为代码提供了高度的灵活性和可扩展性。在本实战项目中,我们将深入探讨如何利用这些特性实现一个类似Spring框架的核心注入机制,即控制反转(Inversion ...
内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...
Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...
总结起来,Java中的反射提供了运行时动态访问和操作类的能力,泛型增加了编译时的类型安全性,注解则为代码添加了额外的信息以供工具使用。理解并熟练运用这些特性,可以显著提升代码的质量和可维护性。在实际开发中...
7. **泛型与反射**:尽管Java泛型在运行时会被擦除,但反射仍能提供一些关于类型参数的信息。 8. **注解的处理**:反射可以用于检查类、方法、字段上的注解,以实现元数据驱动的编程。 9. **安全性与性能**:虽然...
- 在可能的情况下,优先考虑使用Java 5引入的泛型和注解,它们可以提供更安全和方便的编程模型,减少对反射的依赖。 总之,Java反射工具类是强大的编程工具,能够极大地提升代码的灵活性,但也需要谨慎使用,以...
6. **泛型处理**:虽然反射无法直接获取到泛型的实际类型,但可以通过方法签名和类加载时的类型信息间接处理。 7. **注解的获取**:通过`Annotation[] annotations = clazz.getAnnotations();`可以获取类上的所有...
通过8个demo,你可以逐步深入理解Java反射机制,从简单的获取类信息,到创建对象,调用方法,访问字段,再到处理注解和泛型,全方位掌握这一强大的工具。每个demo都应该设计为解决一个特定的问题,例如如何动态调用...
Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改私有成员,这为实现元编程和框架设计...
在Java中,反射机制主要通过java.lang.Class类和相关的类库来实现,它使得我们能够在运行时动态地获取类的信息(如类名、属性、方法等)并能创建和调用对象。 1. **类的加载与Class对象** 当Java虚拟机(JVM)加载一...
1. 泛型信息:虽然Java泛型在编译后会被擦除,但通过反射仍可以获取到泛型的实际类型。 2. 接口实现:`Class`对象的`getInterfaces()`方法返回该类实现的所有接口。 3. 注解处理:`Class`、`Method`和`Field`对象都...
9. **注解处理**:Java反射也可以用于读取和处理类、方法、字段上的注解,这对于实现元数据驱动的设计或者自动生成代码非常方便。 10. **动态代理**:Java的`java.lang.reflect.Proxy`类提供了创建动态代理的能力,...
本文将基于"java经验积累"这一主题,深入探讨Java的相关知识点,包括类加载器、并发处理、注解(Annotation)、线程池、泛型、自定义注解以及Java与模式思考。 首先,我们来关注"深入探讨 Java 类加载器"。Java的类...
Java反射是Java编程语言中的一个强大特性,它允许程序在运行时检查类、接口、字段和方法的信息,甚至能够在运行时动态地创建对象并调用其方法。这一特性基于Java的`java.lang.reflect`包,提供了对类和对象深层次...
在Java中,反射主要用于在运行时分析类、接口、字段和方法的信息,使得我们可以在不知道对象具体类型的情况下创建和操作对象。下面我们将详细探讨Java反射的基本方法及其应用。 一、获取类信息 1. `Class` 类:...
注解是Java提供的一种元数据,可以通过反射获取到类、字段或方法上的注解信息,进行自定义逻辑处理。 总之,Java反射机制为开发者提供了强大的动态操作能力,但也需要注意其带来的性能和安全风险。在合理的情况下...
Java反射是Java编程语言中的一个强大特性,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白,它属于元编程的一部分,即在编写程序时能够...
通过反射,我们可以实现动态加载类、创建对象、调用方法、访问字段,甚至处理注解和动态代理。在进行框架设计、插件系统、元编程时,反射都是不可或缺的一部分。在学习和使用反射时,一定要注意其潜在的风险,同时...