`
375809600
  • 浏览: 153144 次
  • 来自: 湖北
社区版块
存档分类
最新评论

java反射的使用详解

阅读更多
java中的反射是一门非常重要的技术,特别是在做框架领域,很值得学习,废话不说,贴代码:

//用来被反射的类
package com.itcast.domain;

public class Person {
private String age;
private static String grade="15";
public Person(){
System.out.println("null");
}
public Person(String age){
System.out.println(age);
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
private static void printName(String name){
System.out.println(name);
}
}




//测试类
package com.itcast.domain;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.Test;
public class Demo1 {
//获得一个类构造函数
@Test
public void testConstructor() throws Exception{
Class clazz=Class.forName("com.itcast.domain.Person");
Constructor noparam=clazz.getConstructor(null);//获得没有参数的构造函数
Constructor con=clazz.getConstructor(String.class);//获得有参数的构造函数
   Person p=  (Person) con.newInstance("19");
}
@Test
public void TestMethod() throws Exception{
Class clazz=Class.forName("com.itcast.domain.Person");
Constructor noparam=clazz.getConstructor(null);//获得没有参数的构造函数,用来new对象
  Person p=  (Person) noparam.newInstance();//获得Person类的对象
  Method m=clazz.getMethod("getAge");//获得类的一般方法,getAge为方法名
  m.invoke(p, null);//调用一般方法
 
  Method method=clazz.getDeclaredMethod("printName",String.class);//获得私有方法,printName为方法名
  method.setAccessible(true);//取得私有方法的调用权限
  method.invoke(p, "这个是PrintName方法");//调用私有方法,字符串是参数

}
//反射获取类的字段
@Test
public void TestFiled() throws Exception{
Class clazz=Class.forName("com.itcast.domain.Person");
Constructor noparam=clazz.getConstructor(null);//获得没有参数的构造函数,用来new对象
  Person p=  (Person) noparam.newInstance();//获得Person类的对象
  p.setAge("15");
  Field field=clazz.getDeclaredField("age");//暴利获取age字段;
  field.setAccessible(true);
  System.out.println(field.get(p));//打印出P对象中age的值
  //获取静态字段的步骤和普通变量的步骤一样
}

}


<div><script> var chanet_u=""; var chanet_e=""; </script><script src='http://file.chanet.com.cn/html/js/position/easyad_115523.js'></script></div>

分享到:
评论

相关推荐

    java反射机制详解与应用

    本文将深入探讨Java反射机制的原理、应用以及如何使用反射API。 首先,让我们了解如何生成Class对象,这是反射操作的基础。Class对象代表了Java中的类,可以通过以下四种方式获取: 1. 使用`getClass()`方法:每个...

    java 反射机制详解

    然而,反射也存在一定的性能开销,因为它打破了 Java 的封装性和安全性,可能导致安全风险,因此在使用时需谨慎,避免滥用。 总的来说,Java 反射机制是 Java 动态性的一个重要体现,它提供了在运行时探索和操作类...

    JAVA反射机制详解视频

    (通过反射获取无参构造方法并使用) (通过反射获取带参构造方法并使用) (通过反射获取私有构造方法并使用) (通过反射获取成员变量并使用) (通过反射获取无参无返回值成员方法并使用) (通过反射获取带参带返回值成员...

    java反射原理详解

    Java反射机制是Java语言的一种强大的特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的类(如Constructor、Method、Field)以及...

    java反射机制详解

    ### Java反射机制详解 #### 一、反射机制是什么 反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地获取类的信息,并且能够动态地创建对象和调用对象的方法。简单来说,反射机制使得Java程序可以...

    Java Reflection (JAVA反射)详解

    以下是对Java反射机制的详细解释: 1. 获取类信息: 要使用反射,首先需要获取类的`java.lang.Class`对象。这可以通过以下几种方式实现: - `Class&lt;?&gt; c = Class.forName("全限定类名");`:根据类的全限定名(包...

    java反射详解

    ### Java反射机制详解 #### 一、引言 Java反射机制是Java编程语言的一个核心特性,它允许程序在运行时动态地访问类的信息,并能够直接操作这些类的对象。这种能力对于许多开发框架(如Spring)来说至关重要,因为...

    java反射机制详解与应用.pdf

    Java 反射机制详解与应用 Java 反射机制是一种非常强大的动态相关机制,允许 Java 程序在运行时加载、探知、使用编译期间完全未知的类别。这种机制允许程序在运行时透过 Reflection APIs 取得任何一个已知名称的...

    JAVA反射机制详解

    ### JAVA反射机制详解 #### 一、JAVA反射机制概述 反射是Java编程语言的一个核心特性,它允许程序在运行时获取类的信息,并且可以动态地创建对象和调用方法。这种能力使得Java程序具备了高度的灵活性和扩展性。...

    JAVA 反射详解PPT

    Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息。通过反射,我们可以动态地创建对象、访问和修改字段、调用方法,甚至执行私有方法和访问包内可见的元素。...

    android系统java反射机制详解

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息。在Android系统中,Java反射机制同样被广泛应用,尤其是在动态加载类、处理不确定类型的对象、调用私有方法...

Global site tag (gtag.js) - Google Analytics