getter和setter怎么用_python setter

getter和setter怎么用_python setter有时候我们只知道一个对象的字段,我们想通过反射的方式将此字段赋值,可直接写反射又太浪费时间,还需要自己手动拼接方法名,而java为我们提供了一个很方便的类(PropertyDescriptor)来操作这一过程。使用很简单,直接看代码:代码importcom.pibgstar.demo.bean.User;importjava.beans.IntrospectionException…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

有时候我们只知道一个对象的字段,我们想通过反射的方式将此字段赋值,可直接写反射又太浪费时间,还需要自己手动拼接方法名,而java为我们提供了一个很方便的类(PropertyDescriptor)来操作这一过程。使用很简单,直接看代码:

代码

import com.pibgstar.demo.bean.User;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/** * @author pibigstar * @create 2018-12-03 18:36 * @desc **/
public class TestPropertyDescriptor { 
   

    public static void main(String[] args){ 
   
        TestPropertyDescriptor test = new TestPropertyDescriptor();
        User user = new User();
        user.setId("123");

        Object id = test.getAttribute("id", user);
        System.out.println("id:"+id.toString());

        test.setAttribute("name",user,"pibigstar");

        System.out.println(user);
    }

    /** * @Author:pibigstar * @Description: 根据字段获取属性值 */
    private Object getAttribute(String filed,Object obj) { 
   
        try { 
   
            PropertyDescriptor pd = new PropertyDescriptor(filed,obj.getClass());
            // 获取getter方法
            Method method = pd.getReadMethod();
            Object result = method.invoke(obj);
            return result;
        } catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) { 
   
            e.printStackTrace();
        }
      return null;
    }

    /** * @Author:pibigstar * @Description: 设置属性字段值 */
    private void setAttribute(String filed,Object obj,Object value) { 
   
        try { 
   
            PropertyDescriptor pd = new PropertyDescriptor(filed,obj.getClass());
            // 获取setter方法
            Method method = pd.getWriteMethod();
            method.invoke(obj, value);
        } catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) { 
   
            e.printStackTrace();
        }
    }
}

User对象也放一下吧

public class User { 
   
    private String id;
    private String name;
   // setter/getter 方法
}

运行结果

id:123
User{id='123', name='pibigstar'}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187273.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • flutter Radio 单选框

    flutter Radio 单选框Flutter单选框

  • redis如何设置密码及验证密码_无线密码忘记了怎么在手机上查看

    redis如何设置密码及验证密码_无线密码忘记了怎么在手机上查看一、前言对于redis而言,其并没有实现访问控制这个功能,但是可以提供一个轻量级的auth认证方式。可以通过编辑对应的redis配置文件。redis.conf来启动二、设置密码1、找到redis的配置文件redis.conf配置文件中的参数:requirepass,就是配置redis访问密码的参数;#默认情况下,是注释的requirepassxxxx;设置requirepass密码如下。2、然后需要重启下redis服务,才能生效#1、kill掉redis进程#2、启动re

  • javah -jni_java this用法

    javah -jni_java this用法目录一、native关键字二、javah命令一、native关键字native即JNI,JavaNativeInterface凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为JavaNativeInterface(Java本地接口)。二、javah命令1首先找到java文件目…

  • jvm触发full gc条件(Linux内存管理机制)

    1、Java垃圾回收机制GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。缺点就是:1.有可能不知不…

  • 40OutputStreamWriter

    40OutputStreamWriter写的转换流,写我们相要写的编码文件java.io.OutputStreamWriteretendsWriterInputStreamReader是字节流通向字符流的桥梁,它使用指定的Charset将要写入流中的字符编码成字节。(编码:把能看懂的变成看不懂的)继承父类,共性成员方法:voidwrite(intc)写入单个字符voidwrite(char[])写入字符数组abstractvoidwriter(char[]cbuf,intoff,intlen)…

  • C++ 顶层 const

    C++ 顶层 const

发表回复

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

关注全栈程序员社区公众号