美文网首页
反射的部分

反射的部分

作者: 一起走天下 | 来源:发表于2019-10-28 16:11 被阅读0次
    public static void main(String[] args) {            
        try {
            Class clazz = Class.forName(Student.class.getName());
//          获取无参构造方法对象
            Constructor constructor  = clazz.getDeclaredConstructor();
            constructor.setAccessible(true);
//         通过无参构造方法对象创建对象
            Object obj = constructor.newInstance();
            System.out.println(obj);
//          通过反射给所有成员变量赋值
//          System.out.println("****通过反射给所有成员变量赋值****");
//          // private String name;
            Field nameField = clazz.getDeclaredField("name");
            nameField.setAccessible(true);
            nameField.set(obj, "风清杨");
            System.out.println(obj);
//          // int age;
            Field ageField = clazz.getDeclaredField("age");
            ageField.setAccessible(true);
            ageField.set(obj, 27);
            System.out.println(obj);


//          通过反射给所有构造方法赋值
            Constructor constructor2 = clazz.getDeclaredConstructor(String.class,int.class);
            constructor2.setAccessible(true);
            Object obj1 = constructor2.newInstance("张三丰",28);
            System.out.println(obj1);
            
            //反射调用方法
            Method method1 = clazz.getDeclaredMethod("getValue",String.class);
            method1.setAccessible(true);
            method1.invoke(obj, "uabhj");
            
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (SecurityException e) {             
                e.printStackTrace();
            } catch (ClassNotFoundException e) {                
                e.printStackTrace();
            } catch (InstantiationException e) {                
                e.printStackTrace();
            } catch (IllegalAccessException e) {                
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
    }

public class Student {
    
    private String name;
    
    public int age;
    
    private Student() {}
    
    private Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
    
    private void getValue(String a) {
        System.out.println(a);
        System.out.println(name+"\t"+age);
    }
}

相关文章

  • 反射的部分

  • Java反射部分(熟悉)

    1.什么是反射? 答:可以将一个程序(类)在运行的时候获得该程序(类)的信息的机制,也就是获得在编译期不可能获得的...

  • Java 反射机制详解:入门、使用、实例

    反射概述 什么是反射 将类的各个组成部分封装为其他对象的过程就叫做 反射,其中 组成部分 指的是我们类的 成员变量...

  • Java(L3)-- Junit、反射、注解

    Junit、反射、注解 今天学习的是 Java 基础加强部分的内容,包括 Junit、反射、注解三部分内容。 Pa...

  • 简单的总结一下Java反射及注解,有什么不足的还请指正!

    反射 一、什么是反射 反射就是将类的各个组成部分封装为其他对象,这就是反射机制 好处:可以在程序运行的过程中,操作...

  • 七、反射

    一、反射机制 : 将类的各个部分 组成一个新的对象(Class 对象) 就是反射机制 二、获取反射对象 通过 对象...

  • Java反射机制详解(三)

    本篇文章主要讲解反射中泛型的一些知识点。主要分为两个部分:第一部分在反射中Class类使用泛型;第二部分通过反射来...

  • 2019-03-18——Java反射

    Java的反射包可以分为6个部分:

  • 获取注解中传递的参数

    传统我们获取注解中的参数都是通过反射进行获取的,但是反射会带来性能消耗的问题,而且这部分反射的代码大多与逻辑无关,...

  • java 反射

    1.反射的概念 将类的各个组成部分封装为其他对象,这就是反射机制。 2.反射的有点 (1)可以在程序运行过...

网友评论

      本文标题:反射的部分

      本文链接:https://www.haomeiwen.com/subject/gyebvctx.html