java 反射的简单应用

用反射的形式来执行以下代码

new String(new StringBuffer("abc"));

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

// 运用反射的方式来获取构造方法new String(new StringBuffer("abc"))

// 通过构造方法来执行

Constructor con = String.class.getConstructor(StringBuffer.class);

System.out.println(con.newInstance(new StringBuffer("abc")));

// 通过反射还可以操作成员变量

ReflactPoint point1 = new ReflactPoint(10, 15);

// 通常我们会这样取得ReflactPoint中的String类型变量的值,并且将其中字符b改成a;

System.out.println(point1.str1.replace(‘b‘, ‘a‘));

System.out.println(point1.str2.replace(‘b‘, ‘a‘));

System.out.println(point1.str3.replace(‘b‘, ‘a‘));

// 现在用反射的方式 应该怎样做呢。

Field[] fields = point1.getClass().getFields();

for (Field field : fields) {

if (field.getType() == String.class)

{

// 获得String变量值

String oldValue = (String) field.get(point1);

String newValue = oldValue.replace(‘b‘, ‘a‘);

// 重新将对象赋值

field.set(point1, newValue);

System.out.println(field.get(point1));

}

}

// 还可以执行方法 比如说获取ReflactPoint类中每个String变量的第二个字符

// 现在用反射的方式 应该怎样做呢。

for (Field field : fields)

if (field.getType() == String.class) {

// 获得String变量值

String oldValue = (String) field.get(point1);

Method method = String.class.getMethod("charAt", int.class);

System.out.println(method.invoke(oldValue, 1));

}

}

}

public class ReflactPoint {

public int x;  public int y;  public String str1 = "ball";  public String str2 = "basketBall";  public String str3 = "Demo";  //增加一个构造函数  public  ReflactPoint(int pointx,int pointy)  {   this.x = pointx;   this.y = pointy;  } }

时间: 2024-11-09 01:00:07

java 反射的简单应用的相关文章

java反射机制简单介绍

1.字节码.所谓的字节码就是当java虚拟机载入某个类的对象时,首先须要将硬盘中该类的源码编译成class文件的二进制代码(字节码),然后将class文件的字节码载入到内存中,之后再创建该类的对象 2.java反射的基础是Class类(注意不是小写的class),Class类实例代表着内存中的一份字节码.常见的获取Class类对象的方法例如以下(第一种为对象的方法,另外一种为类的方法): Dog dog = new Dog(); Class dogClass = dog.getClass();

通过java反射实现简单的关于MongoDB的对象关系映射(ORM).

通过阅读MongoDB  3.2.1的官方文档中关于java 编程发现最新的文档并没有实现对对象到Document的映射,所以自己有了利用反射实现简单的关系映射. 1.定义抽象类:AbstractMongoSession import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.client.MongoCollection; import com.mo

Java反射机制简单使用

1.Java反射相关类所在package: java.lang.reflect.* 2.开始使用Reflection: 使用reflect相关类,遵循三个步骤: a.获取想要操作类的 java.lang.Class 对象. 如: Class c = Class.forName("java.lang.String"); //得到的是一个String类的对象 或者使用: Class c = int.class; b.调用诸如 getDeclaredMethods() 方法,用以获取该类的方

Java反射的简单入门

1.Class的简单介绍 Class类的类表示正在运行的Java应用程序中的类和接口. 枚举是一种类,一个注解是一种接口, 每个数组也属于一个反映为类对象的类,该对象由具有相同元素类型和维数的所有数组共享. 原始Java类型( boolean , byte , char , short , int , long , float和double ),和关键字void也表示为类对象. 摘自jdk1.8中文版,刚开始看可能不懂,现在逐句来解释一下. 第一句话:一个类被加载以后,JVM就会在内存中给创建一

java反射机制-简单实例

public class Car { private String brand; private String color; private int maxSpeed; public Car() { } public Car(String brand, String color, int maxSpeed) { this.brand = brand; this.color = color; this.maxSpeed = maxSpeed; } public String getBrand()

java反射简单实现注入

做了好久的java开发 ,却一直没有详细了解java反射机制,后来写项目的时候发现用反射可以少写好多无聊的代码,因此用java反射简单实现注入. java反射的具体细节可参见 这篇博客写的非常详细,点此进入~ 而一般基于业务的编程主要用反射实现将属性动态的注入一个对象中. 以下是方法实现: 1 /** 2 * 根据 传入的map与类名,通过反射实例化对象 3 * @param className 需要实例化的类名 4 * @param map 包含属性的键值对 (String,Object) 5

Java反射机制的原理及在Android下的简单应用

花了几天时间,研究了一下Java的反射机制.在这里总结一下这几天学习的成果,一来分享自己的学习过程和在学习中遇到的问题,二来是给像我一样不太了解Java反射机制的同学做一个简单的介绍.在文章后面会链接一个Android反射机制的应用程序. 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述

java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象

java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类的私有方法么?private()方法 答:可以,class取出method,method继承executable类,executable类继承AccessibleObject类,AccessibleObject有个setAccessiable()设置这个方法是否可访问. 则设置成true,就可将pr

java反射(四)--反射与简单java类

一.传统简单java类 简单的java类主要是由属性所组成,并且提供有相应的setter以及getter的处理方法,同时简单java类最大的特征就是通过对象保存相应的类的属性内容,但是如果使用传统的简单java类的开发,那么也会面临非常麻烦的困难: 1 class Emp{ 2 private String ename; 3 private String job; 4 5 public void setEname(String ename) { 6 this.ename = ename; 7 }