简单实例:
package com.zhaixiaofeng.reflect
public class Car(){
private String brand;
private String color;
private String maxSpeed;
public Car(){};
public Car(String brand, String color, String maxSpeed){
this.brandk = brand;
this.color = color;
this.maxSeepd = maxSpeed;
}
public void introduce(){
System.out.pring("brand:" + brand + ";color:" + color + ";maxSpeed" + maxSpeed);
}
}
public static Car initByDefaultConstructor() throws ThrowableException{
//(1)Get object constrator by classloader
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class cls = loader.loadClass(com.zhaixiaofeng.reflect.Car);
//(2)Get default construtor and instance object car
Constructor cons = cls.getDeclaredConstructor(Class[],null);
Car car = (Car)cons.newInstance();
//(3)Set object properties by reflect
Method setBrand = class.getMethod("setBrand",String.class);
setBrand.invoke(car,"falali");
return car;
}
public ReflectDemo{
public stataic void main(String [] args){
//Old mothed
Car oldCar = new Car("benchi","red","1000");
oldCar.introduce();
//New mothed by reflect
Car newCar = initDefaultConstructor();
newCar.introduce();
}
}
解释:
在ReflectDemo类中,使用到了Java中常用的反射类:ClassLoader,Class,Constructor,Method.
通过这些反射类方法、可以直接调用Class的各个功能。
(1)获取当前线程的ClassLoader,通过指定的全限定类:com.zhaixiaofeng.reflect.Car,装载Car类对应的反射实例.
(2)通过Car的反射类对象获取Car的构造函数对象cons,通过构造函数的newInstance()方法实例化Car对象,其效果等同于newCar();
(3)通过Car的反射类对象的getMethod(String methodName,Class paramClass)获取属性的Setter方法对象,第一个参数是目标Class的方法名;第二个参数是方法入参的对象类型。获取方法反射对象后,即可通过invoke(Object obj,Object param)方法调用目标类的方法,该方法的第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。
分享到:
相关推荐
Java反射是Java语言的一个重要特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。反射机制使得代码能够动态地获取类的信息并调用其方法,增加了程序的灵活性和可扩展性。以下将详细介绍Java反射中的几...
这篇博文将带你入门Java反射,并通过属性和方法的调用来实践这一概念。 首先,理解反射的基础概念。在Java中,`Class`类代表了运行时的类信息。通过`Class`对象,我们可以获取到类的名称、构造器、方法和字段。例如...
在这个“JDBC_Java反射技术入门”资源中,初学者可以了解到如何使用Java进行数据库操作的基础知识,包括连接数据库、执行SQL语句、处理查询结果等。 1. **JDBC基础**: - **加载驱动**:在使用JDBC之前,我们需要...
总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...
最后,PPT可能还介绍了Java的高级话题,如反射、注解、泛型和设计模式。这些内容有助于提升你的编程技巧,使你能更好地应对复杂项目的需求。 总的来说,“java从入门到精通PPT”提供了一个全面的学习路线,从基础到...
- [Baeldung:Java反射入门](https://www.baeldung.com/java-reflection) - [Stack Overflow上的相关讨论](https://stackoverflow.com/questions/tagged/java-reflection) 总之,Java反射机制是理解Java动态特性的...
本资源“JAVA基础入门到精通pdf”提供了一条系统学习Java的路径,适合初学者作为入门教程。以下是对Java基础知识的详细解读: 1. **Java概述**:Java是由Sun Microsystems(现为Oracle公司)于1995年推出的一种面向...
"Java基础入门"这个压缩包提供了学习Java编程的基础资源,包括经典的入门书籍源码和JDK11的中文版API文档。 首先,让我们来了解一下Java API。API(Application Programming Interface)是一系列预先定义的函数,...
完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 网络编程(共32页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络...
Java基础入门系列是帮助初学者掌握Java编程的重要学习材料,本篇主要介绍了泛型、反射和注解这三大高级特性。 泛型是Java SE 5版本引入的一个新特性,它的主要目的是允许在使用类、接口和方法时能够引用到任何类型...
12. **反射与注解**:讲解Java反射机制,如何动态访问和修改类、接口、方法,以及注解的使用和自定义注解的创建。 13. **Java高级特性**:如模块化系统(Project Jigsaw)、Optional类、并发工具类(如...
Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。这使得开发者能够在不事先知道具体类名或方法名的情况下,动态地创建对象并调用方法。Java反射机制是Java动态性...
完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 网络编程(共32页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络...
《Java入门到精通》是一本面向Java初学者的权威指南,旨在帮助读者快速掌握Java编程语言的基础知识并逐步深入到高级技术。这本书涵盖了从安装Java开发环境,理解基本语法,到构建复杂应用程序的全过程,是学习Java...
完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 网络编程(共32页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络...
如异常处理、集合框架(ArrayList、LinkedList、HashMap等)、IO流(用于文件读写和网络通信)、多线程编程(线程同步、线程池)、反射机制、设计模式(如单例模式、工厂模式、观察者模式等)以及Java的高级API,如...
完整版 Java基础入门教程 Java程序语言设计 07 网络编程 反射机制(共23页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 网络编程(共32页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络...
第九章通常会涉及一些高级主题,如反射、注解、JNI(Java Native Interface)等,这些可以帮助开发者更好地理解和利用Java的底层机制。 每一章都会包含大量的实例代码和练习,以帮助读者巩固理论知识,提高实际编程...