`
newleague
  • 浏览: 1492980 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

JAVA基础-反射

阅读更多

package com.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class JavaTest {

 private String name;
 private String password;
 
 
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public static void main(String [] args){
  JavaTest jTest = new JavaTest();
  jTest.setName("madp");
  jTest.setPassword("123");
  Class classType = jTest.getClass();
  try {
   JavaTest jTest2 = (JavaTest)classType.getConstructor(new Class[]{}).newInstance(new JavaTest[]{});
  } catch (IllegalArgumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SecurityException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InstantiationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  //获得对象所有的属性
  Field fields[] = classType.getDeclaredFields();
  for(int i=0;i<fields.length;i++){
   Field field = fields[i];
   String fieldName = field.getName();
   //获得和属性对应的getXXX()方法的名字
   String getMethodName = "get"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
   Method getMethod = null;
   try {
    //获得和属性对应的getXXX()方法
    getMethod = classType.getMethod(getMethodName, new Class[]{});
   } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   Object value = null;
   try {
    //调用对象的getXXX()方法
    value = getMethod.invoke(jTest, new JavaTest[]{});
   } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}

 

分享到:
评论

相关推荐

    大学课程讲义-Java基础-反射.pptx

    Java基础-反射机制详解 本文将详细介绍Java基础中的反射机制,包括Class类、ClassLoader类、Constructor、Method、Field类的用法,以及动态代理机制。 Class类 Class类是Java中一个特殊的类,用于描述类本身的...

    《剑指offer》Java基础-反射篇.pdf

    变化,需要更换不同的类实例化,频繁修改源...• 反射基础篇中,通常会涵盖上述内容,并在文末进行总结,帮助读者理解和掌握反射的核心概念和使用技巧。在面试或深入学习开源框架时,对反射的理解和运用是非常重要的。

    JAVA基础--JAVA中的反射机制详解

    JAVA 反射机制详解 JAVA 反射机制是 Java 语言中的一种动态获取信息和动态调用对象方法的功能。它允许程序在运行时获取类的信息、构造对象、获取成员变量和方法、调用对象的方法等。 Java 反射机制主要提供了以下...

    java专题-反射

    - **动态代理**:反射是实现动态代理的基础,例如JDK动态代理和CGLIB代理。 - **框架开发**:许多Java框架,如Spring,利用反射机制进行依赖注入和组件扫描。 - **单元测试**:在单元测试中,反射常用来设置私有字段...

    主题:学习Spring必学的Java基础知识(1)----反射

    主题:学习Spring必学的Java基础知识(1)----反射主题:学习Spring必学的Java基础知识(1)----反射主题:学习Spring必学的Java基础知识(1)----反射

    Java基础-注解和反射

    ### Java基础-注解和反射 #### 注解(Annotation) 从JDK5开始,Java引入了一个重要的特性——元数据支持,即注解。这是一项强大的功能,它允许开发者在不改变原有代码逻辑的情况下向源代码中添加额外的信息。注解在...

    Java基础语法测试-基础数据类型-注解-数组-inet-反射-oop-Java代码实现

    内容概要:通过带着读者编写Java基础语法测试代码,理解基础数据类型-注解-数组-inet-反射-oop-Java代码实现过程和测试代码 适合人群:初学java语法入门测试代码 能学到什么:①注解、数组、数据类型、inet、method...

    java基础---PPT讲稿.zip

    这份"java基础---PPT讲稿.zip"压缩包包含了对Java基础知识的深入讲解,旨在帮助学习者掌握Java的核心概念,为更高级的学习阶段打下坚实的基础。 在PPT中,我们可能会涵盖以下几个关键知识点: 1. **Java简介**:...

    Java基础之-反射(非常重要)

    这个Class对象是反射的基础,因为它包含了关于类的所有信息。 3. **获取Class对象**: - 使用`Class.forName("className")`,传入类的全名(包括包名)。 - 通过对象的`getClass()`方法,如`object.getClass()`。...

    java基础--微学院

    Java基础是编程世界中至关重要的一环,尤其对于初学者来说,掌握好Java基础知识将为后续的深入学习和开发工作奠定坚实的基础。"java基础--微学院"这个资源显然是为了帮助初学者系统地学习Java编程而设计的。让我们来...

    Java基础[08-反射].ppt

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...

    JAVA基础-尚硅谷课件资料

    【Java基础-尚硅谷课件资料】是一套全面讲解Java编程语言的学习资源,适用于初学者和进阶者。课程内容涵盖了从Java语言的基础概念到高级特性的深入理解,旨在帮助学习者掌握Java开发的核心技能。 在Java编程语言的...

    java基础教程----精华版

    这个"java基础教程----精华版"显然是一份精心整理的资料,旨在帮助初学者快速掌握Java编程的基础知识。下面将详细介绍Java语言的核心概念和关键知识点。 1. **Java语法基础**: - **变量**:在Java中,变量是存储...

    2020老杜最新Java零基础进阶视频教程-反射机制课件

    【Java反射机制详解】 在Java编程中,反射机制是一个强大的工具,它允许程序在运行时检查自身,并且能够动态地操作类和对象的内部信息。这个特性使得Java代码具有高度的灵活性,能够在不修改源码的情况下,根据需要...

    Java基础-经典入门教程

    这个“Java基础-经典入门教程”旨在帮助初学者掌握Java编程的核心概念和技能,为深入学习和应用Java打下坚实的基础。 1. **Java简介**:Java以其“一次编写,到处运行”的特性而闻名,它使用JVM(Java虚拟机)作为...

    Java 基础(7-8) - 反射机制详解.pdf

    一、反射基础 在 Java 中,反射机制是通过 Class 类实现的。Class 类是 java.lang 包中的一个类,存在于 JDK 中。Class 类的实例表示 Java 应⽤运⾏时的类(class、enum)或接⼝(interface 和 annotation)。每个 ...

    Java 基础-尚硅谷学习笔记(含面试题) 2023年

    本资料“Java 基础-尚硅谷学习笔记(含面试题)2023年”旨在提供全面的Java基础知识,并结合最新的面试趋势,帮助学习者巩固基础并为面试做好准备。 1. **Java语法基础** - **变量与数据类型**:Java支持基本数据...

    Java基础-day15每日作业卷1

    【Java基础-day15每日作业卷1】主要涵盖了Java编程中的基础概念,特别是关于类的加载、初始化、反射以及方法的执行。以下是这些知识点的详细解释: 1. **类加载过程**: - 加载:Java虚拟机(JVM)读取.class文件...

Global site tag (gtag.js) - Google Analytics