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'}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vr全景制作常用的app有哪些,vr全景拍摄真的难吗?[通俗易懂]

    ​现在互联网发展得很快,从2G网络逐渐进步到5G网络,线上的营销方式也逐渐从文字转变为图片营销。图像呈现出来的效果更能打动用户,也更能吸引用户的注意力,对成交更有帮助。vr全景图展示是很多企业都在使用的一种技术,提高用户的信任度,增强用户粘性。那么vr全景制作app有哪些和vr全景拍摄难吗?下面就给大家简单讲一下吧。一般来说,大多数摄影师都使用鱼眼镜头、单反相机设备来拍摄所需的vr全景图,操作方法比较简单,但是拍摄完我们还需要来处理这个图片,这些步骤就比较麻烦了。vr全景制作app有哪些关于

    2022年4月18日
    107
  • idea Tomcat日志乱码问题

    idea Tomcat日志乱码问题找到tomcat日志文件修改编码格式即可全部改成GBK编码格式,重启idea即可

    2022年9月26日
    2
  • TCP和UDP协议的区别_朋友关系

    TCP和UDP协议的区别_朋友关系在解释两者之间的关系之前,我们必须从宏观的角度了解互联网的整个交互模型。因为当了解互联网在大体上是如何运作时,我们才能了解HTTP和TCP存在的意义,包括他们所要解决的问题是。 (此图来自Udacity的网络协议教程)互联网的模型被分为4层,从上至下每一层都依赖其底层协议。换言之,Application(应用层)的协议操作成功的前提是Transport(运输层)的存在。没有运输层就没有应…

    2022年9月20日
    3
  • c#-RTF文本编辑器

    c#-RTF文本编辑器

    2022年1月11日
    181
  • gtest测试用例_数据字典简单例子

    gtest测试用例_数据字典简单例子#includeintfun1(){return10;}classtest:public::testing::Test{public:intfun2(){return1;};};TEST(fun1,test_fun){EXPECT_EQ(10,fun1());//单个函数的测试}TE

    2022年9月27日
    4
  • 中科院计算机生物学,中科院计算生物学重点实验室揭牌[通俗易懂]

    中科院计算机生物学,中科院计算生物学重点实验室揭牌[通俗易懂]德国马普学会副主席HerbertJaeckle和中科院副院长李家洋共同为重点实验室揭牌3月29日下午,中科院计算生物学重点实验室在上海生科院计算生物学所正式揭牌。德国马普学会副主席HerbertJaeckle教授、德国马普学会分子植物生理所所长LotharWillmitzer教授、中科院副院长李家洋院士、中科院生命科学与生物技术局局长张知彬研究员、国际合作局局长吕永龙研究员,上海生科院副院长…

    2022年7月27日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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