关于java:Java-反射实例操作

反射能够在代码运行时,动静的获取对象、调用办法、设置属性。动静操作,升高代码偶合性,进步灵便度。其JDBC库就是通过反射加载。

实例操作

以操作User对象为例:

/*
 * File:User.java
 * User:iChochy
 * URL:https://ichochy.com
 * Copyright (c) 2020
 * Date:2020/08/31 10:18:31
 */

package com.ichochy.example;

public class User {
    private String name = ”iChochy“;
    private int age = 32;
    private String url = ”https://ichochy.com“;

    public void display(){
        System.out.println(”Name:“+name);
        System.out.println(”Age:“+age);
        System.out.println(”URL:“+url);
    }
}

失常调用

User user = new User();
user.display();

获取对象

类动静获取

//获取类
Class<?> clazz = User.class;
//获取对象
Object obj = clazz.newInstance();

类门路获取

//获取类
Class<?> clazz = Class.forName(”com.ichochy.example.User“);
//获取对象
Object obj = clazz.newInstance();

获取属性

获取全副

Field[] fields = clazz.getDeclaredFields();
for (Field field: fields) {
    System.out.println(field.getName());//name、age、url
}

属性名获取

Field field = clazz.getDeclaredField(”age“);
System.out.println(field.getName());//age

设置属性

Object obj = clazz.newInstance();
Field field= clazz.getDeclaredField(”age“);//获取私用属性
field.setAccessible(true);//设置反射拜访权限查看
System.out.println(field.get(obj)); //32
field.set(obj,18);//设置属性
System.out.println(field.get(obj));//18

获取办法

获取全副

Method[] methods = clazz.getMethods();
for(Method method:methods){
    System.out.println(method.getName()); //display
}

办法名获取

Method method = clazz.getMethod(”display“);
System.out.println(method.getName()); //display

调用办法

Object obj = clazz.newInstance();
Method[] methods = clazz.getMethods();
for(Method method:methods){
    //调用 display 办法
    if(”display“.equals(method.getName())){
        method.invoke(obj);
    }
}

办法名调用

Object obj = clazz.newInstance();
Method method = clazz.getMethod(”display“);
method.invoke(obj);

相干文章

  • Java 中的重写(Override)与重载(Overload) 2020/08/20

  • 收费申请 JetBrains 开源开发许可证,蕴含 IDEA 2020/08/19

  • Java 开发环境的搭建,开启你的编程之旅2020/08/15

源文:https://ichochy.com/posts/20200823.html


请帮忙点、转发!


【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年50元

阿里云限时活动-2核2G-5M带宽-60G SSD-1000G月流量 ,特惠价99元/年(原价1234.2元/年,可以直接买3年),速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据