反射的应用一般是要用到某些特殊类的属性和方法,无论是一般方法还是私有方法都可以通过反射机制获取到。
下面将介绍其中的6种属性的获取:一般构造函数,私有有参构造函数,一般变量,私有变量,一般方法,私有有参方法
下面将介绍其中的6种属性的获取:一般构造函数,私有有参构造函数,一般变量,私有变量,一般方法,私有有参方法
---测试类 package com.test.jse.invoke; public class MyClass { public String n = "MyClass公有变量"; private String m = "MyClass私有变量"; public MyClass(){ System.out.println("MyClass无参公有构造方法"); } private MyClass(int n,String name){ System.out.println("MyClass有参私有构造方法"+"\t名字:"+name+"\t编号:"+n); } public void say(){ System.out.println("MyClass类的无参公有一般方法---say()"); } private void tell(String name){ System.out.println("MyClass类的一般有参私有方法----private tell()"); } }
----利用反射获取类中属性和调用类中的方法 package com.test.jse.invoke; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class People { public static void main(String[] args) { try { Class clazz = Class.forName("com.test.jse.invoke.MyClass");//反射出来的类clazz MyClass myClass =(MyClass)clazz.newInstance();//MyClass类无参数公有构造函数 Constructor constructor = clazz.getDeclaredConstructor(new Class[]{int.class,String.class}); constructor.setAccessible(true);//设置查看私有方法的权限 MyClass myclass2 = (MyClass)constructor.newInstance(1,"张三"); System.out.println(clazz.getField("n").get(myClass)); Field field = clazz.getDeclaredField("m");//定义m变量 field.setAccessible(true); System.out.println(field.get(myClass)); Method method_say = clazz.getMethod("say"); //先查询定位到公有say()方法 method_say.invoke(myClass); //再执行say()方法 Method method = clazz.getDeclaredMethod("tell", new Class[]{String.class }); //定义方法属性 method.setAccessible(true); method.invoke(myClass,"张三"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } } }
发表评论
-
java验证字符串中是否包含数字,对数字的操作
2016-03-15 11:01 9538在javascript中有一个方法 ... -
jdk7 Collections.sort()方法报非法参数异常
2016-03-03 18:57 12104JDK7的Comparison method violates ... -
log4j.properties配置详解
2016-01-18 16:50 1324Log4J的配置文件(Configuration File)就 ... -
Java 日期时间 Date类型,long类型,String类型表现形式的转换
2015-12-24 17:35 3313Java 日期时间 Date类型,long类型,String类 ... -
Java多线程-工具篇-BlockingQueue
2015-11-24 16:13 1013Java多线程-工具篇-Block ... -
Java 实例 - 队列(Queue)入门用法
2015-11-23 17:27 2032队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表 ... -
Java中序列化的serialVersionUID作用
2015-11-13 14:13 4878Java序列化是将一个对象 ... -
java的序列化和反序列化
2015-10-27 19:48 1148Java基础学习总结——Jav ... -
java中volatile关键字的含义
2015-08-12 20:10 787java中volatile关键字的含 ... -
Java读写文件中文乱码问题
2015-07-20 17:49 3003问题:在用Java程序进行读写含中文的txt文件时,经常会出现 ... -
String类中split方法的使用
2015-07-02 14:39 1026String类中split方法的使用 split 方法:将一个 ... -
PreparedStatement防止SQL注入
2015-04-11 16:27 2835一条效率差的sql语句,足以毁掉整个应用. Stateme ... -
Redis与Memcached的区别
2015-04-11 15:20 1104如果简单地比较Redis与Memcached的区别,大多数都 ... -
Session的生命周期
2015-04-11 11:58 961我们已经知道,Session是在用户第一次访问网 ... -
JAVA多线程和并发基础
2015-04-11 11:58 802JAVA多线程和并发基础 ... -
Hibernate一级缓存详解
2015-04-11 11:58 15611.Session 级别的缓存,它同session邦定。它 ... -
Java堆内存Heap与非堆内存Non-Heap
2015-04-08 22:19 1673堆(Heap)和非堆(Non-heap)内存 按照官 ... -
JVM内存模型
2015-04-08 22:07 948/*** 转载请注明作者l ... -
java类加载机制
2015-04-08 21:42 743研究Java类加载机制必要 ... -
classloader加载class的流程及自定义ClassLoader
2015-04-08 21:33 2306/*** 转载请注明作者longdick http: ...
相关推荐
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
总结,Java反射机制为我们提供了强大的动态性,能够方便地获取和操作类的属性和方法,包括私有成员和子类父类中的成员。通过熟练掌握反射技术,开发者可以实现更灵活、更动态的代码,但也需要谨慎使用,以避免潜在的...
在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...
Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。这个能力使得开发者可以突破静态类型的束缚,实现一些在编译时期无法完成...
通过上述示例,我们了解了如何使用Java反射机制来获取父类的所有属性和方法。这种方法非常灵活,适用于许多不同的场景,如框架开发、测试工具等。需要注意的是,虽然反射功能强大,但在生产环境中应谨慎使用,因为它...
反射获取属性和调用方法是其核心功能,广泛应用于框架设计、动态代理、插件机制等领域。下面将详细解释这两个概念。 1. 反射获取属性: 在Java中,`java.lang.reflect`包提供了`Class`类来获取类的信息,包括其...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部结构,包括类的属性、方法以及构造器。...通过上述步骤,你可以有效地利用反射获取和操作类的父类属性和方法。
在Java编程语言中,反射(Reflection)是一种强大的技术,它允许程序在运行时检查类、接口、字段和方法的信息,并能够动态地创建对象和调用方法。本文将详细介绍如何利用Java反射来创建get和set方法,并演示如何通过...
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
3. 反射获取属性变量 3.1 获取所有public修饰符的成员变量 3.2 获取指定字段并赋值 3.3 获取所有的成员变量(不考虑修饰符) 3.4 获取私有的变量(利用暴力反射) 4. 反射获取构造方法 4.1有参构造 4.2无参构造 ...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...
这篇博文将带你入门Java反射,并通过属性和方法的调用来实践这一概念。 首先,理解反射的基础概念。在Java中,`Class`类代表了运行时的类信息。通过`Class`对象,我们可以获取到类的名称、构造器、方法和字段。例如...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类、接口、字段和方法的信息,使得我们可以在不知道对象具体...
- 运行时检查类结构:例如在单元测试中验证类的属性和方法。 总结来说,Java反射为开发者提供了强大的工具,可以在运行时深入洞察和操纵类的结构,虽然使用时需谨慎,但它无疑极大地扩展了Java的灵活性和功能性。在...
总结一下,Java反射机制提供了一种动态访问和操作类、接口、属性和方法的能力,这在处理不确定类型、插件系统、元数据解析等多种场景下非常有用。通过`Class`对象,我们可以获取类的详细信息,包括但不限于字段、...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和方法,即使这些属性或方法是私有的。这篇博客文章可能讨论了如何利用反射机制来获取类的私有属性并读取其对应...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java程序具有了高度的灵活性和动态性,尤其在框架开发、插件系统...