Java反射的两种使用方法(推荐)
1.创建User.java
package com.tao.test; public class User { private String name; private int id; public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
2.main方法
package com.tao.test; import java.lang.reflect.Constructor; import java.lang.reflect.Field; public class test { public static void main(String[] args) throws Exception, SecurityException { //第一种 Constructor<?>方法 Constructor<?> a = User.class.getDeclaredConstructor(); a.setAccessible(true); User b = (User)a.newInstance(); b.setId(1);//id字段 b.setName("test");//name字段 System.out.println(b.getId()+" "+b.getName()); //第二种 Class<?>方法 Class<?> c = Class.forName("com.tao.test.User"); Field idF = c.getDeclaredField("id");//id字段 idF.setAccessible(true); Object o = c.newInstance(); idF.set(o, 2); Field nameF = c.getDeclaredField("name");//name字段 nameF.setAccessible(true); Object name = c.newInstance(); nameF.set(name, "jack"); System.out.println(idF.get(o)+" "+nameF.get(name)); //普通new User user = new User(); user.setId(3); user.setName("tery"); System.out.println(user.getId()+" "+user.getName()+" "+user.getClass()); } }
3.控制台输出:
test
jack
tery class com.tao.test.User
总结
以上所述是小编给大家介绍的Java反射的两种使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
实例讲解Java编程中数组反射的使用方法
什么是反射 "反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为."这个概念常常会和内省(Introspection)混淆,以下是这两个术语在Wikipedia中的解释: 内省用于在运行时检测某个对象的类型和其包含的属性: 反射用于在运行时检测和修改某个对象的结构及其行为. 从它们的定义可以看出,内省是反射的一个子集.有些语言支持内省,但并不支持反射,如C++. 内省示例:instanceof 运算符用于检测某个对象是否属于特定的类. if (obj inst
-
java反射使用示例分享
复制代码 代码如下: public class ReflexTest { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, Instantiat
-
Java利用反射如何查找使用指定注解的类详解
前言 最近有些空,想自己写个跟spring里的注解一样的注解来用,然后希望能找到使用了自己写了注解的类,下面来介绍一下实现方法 声明,下面代码是没看过spring源码写的,基本上都是网上找的博客,整理的 定义注解 Controller.java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Controller { } RequestMapping.jav
-
java 注解annotation的使用以及反射如何获取注解
一.注解基本知识 1.元注解 元注解是指注解的注解.包括 @Retention @Target @Document @Inherited四种. 1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口. 2. 参数成员只能用public或默认(default)这两个访问权修饰 3. 参数成员只能用基本类型byte,short,char,int,long,float,doubl
-
java使用dom4j解析xml配置文件实现抽象工厂反射示例
逻辑描述: 现在我们想在B层和D层加上接口层,并使用工厂.而我们可以将创建B和创建D看作是两个系列,然后就可以使用抽象工厂进行创建了. 配置文件:beans-config.xml.service-class与dao-class分别对应两个系列的产品.子菜单中id对应接口的命名空间,class对应实现类的命名空间. 复制代码 代码如下: [html] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"
-
基于Java回顾之反射的使用分析
反射可以帮助我们查看指定类型中的信息.创建类型的实例,调用类型的方法.我们平时使用框架,例如Spring.EJB.Hibernate等都大量的使用了反射技术.反射简单示例 下面来演示反射相关的基本操作 首先是基础代码,我们定义一个接口及其实现,作为我们反射操作的目标: 复制代码 代码如下: interface HelloWorldService { void sayHello(String name); } class MyHelloWorld implements HelloWorld
-
java类加载器和类反射使用示例
一.一个命令对应一个进程. 当我们启动一个Java程序,即启动一个main方法时,都将启动一个Java虚拟机进程,不管这个进程有多么复杂.而不同的JVM进程之间是不会相互影响的.这也就是为什么说,Java程序只有一个入口--main方法,让虚拟机调用.而两个mian方法,对应的是2个JVM进程,启动的是两个不同的类加载器,操作的实际上是不同的类.故而不会互相影响. 二.类加载. 当我们使用一个类,如果这个类还未加载到内存中,系统会通过加载.连接.初始化对类进行初始化. 1.类加载:指的是将类的c
-
Java反射的两种使用方法(推荐)
1.创建User.java package com.tao.test; public class User { private String name; private int id; public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public vo
-
Java之递归求和的两种简单方法(推荐)
方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ public void sum(int num) { this.sum += num--; if(0 < num){ sum(num); } else { System.out.println("sum = " + sum); } } } 方法二: package com.smbea
-
aspx后台传递Json到前台的两种接收方法推荐
第一种:前台接收 dataType: "json", success: function (data) { var varReceiver = data; } <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="echart2.aspx.cs" Inherits="RTC.echart2" %> <!DOCTYPE html&
-
js数组的五种迭代方法及两种归并方法(推荐)
js数组的五种迭代方法及两种归并方法(推荐) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht
-
计时器的time_t和clock_t 的两种实现方法(推荐)
想给自己初步完成的相空间搜索算法计算一下运行时间,于是尝试了如下使用 time_t 类型的方式 #include <stdlib.h> #include <iostream> #include <time.h> #include "StateFunctions.h" using namespace std; int main(int argc, char** argv) { time_t start, finish; time(&start)
-
通过java反射机制动态调用某方法的总结(推荐)
如下: public Object invokeMethod(String className, String methodName, Object[] args) throws Exception{ Class ownerClass = Class.forName(className); Object owner = ownerClass.newInstance(); Class[] argsClass = new Class[args.length]; for (int i = 0, j =
-
java 中ArrayList迭代的两种实现方法
java 中ArrayList迭代的两种实现方法 Iterator与for语句的结合来实现,代码很简单,大家参考下. 实现代码: package cn.us; import java.util.ArrayList; import java.util.Iterator; //ArrayList迭代的两种方法 //Iterator与for语句的结合 public class Test1 { public static void main(String[] args) { ArrayList arra
-
Java SHA-256加密的两种实现方法详解
本文实例讲述了Java SHA-256加密的两种实现方法.分享给大家供大家参考,具体如下: 最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密.学习了下,总结两种方法供后面参考: 1.利用Apache的工具类实现加密: maven: <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifac
-
Java 中二进制转换成十六进制的两种实现方法
Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static String toHex(byte[] result) { StringBuffer sb = new StringBuffer(result.length * 2); for (int i = 0; i < result.length; i++) { sb.append(Character.forDigi
-
Java基于字符流形式读写数据的两种实现方法示例
本文实例讲述了Java基于字符流形式读写数据的两种实现方法.分享给大家供大家参考,具体如下: 第一种方式:逐个字符进行读写操作(代码注释以及详细内容空闲补充) package IODemo; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyFileDemo { /** * @param args * @throws IOException */ p
随机推荐
- go语言if/else语句简单用法示例
- 使用 Adsutil.vbs iis管理脚本
- 详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问
- 解决java后台登录前后cookie不一致问题
- Java 中的 DataInputStream 介绍_动力节点Java学院整理
- Python中shutil模块的常用文件操作函数用法示例
- javascript mouseover、mouseout停止事件冒泡的解决方案
- 第一次接触神奇的Bootstrap
- JavaScript在for循环中绑定事件解决事件参数不同的情况
- 记录asp.net网站是什么原因导致停止运行的代码
- php字符串过滤与替换小结
- winform绑定快捷键的方法
- 在js文件中写el表达式取不到值的原因及解决方法
- 使用ajax加载的页面中包含的javascript的解决方法
- Javascript call和apply区别及使用方法
- 用VBS记录客户机操作的代码
- Java中==与equals的区别小结
- 基于jQuery实现弹幕APP
- xml文档转换工具,附图表例子(hta)
- Java 文件上传的实例详解