zoukankan      html  css  js  c++  java
  • java 获取实体类对象属性值的方法

      在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到,如果想给某个属性赋值则用变量名.set()的方法赋值。

    第一步,生成一个属性类:

    public class Student {
    //编号
    private int id;
    //姓名
    private String name;
    //年龄
    private int age;

    /**
    * 有参构造,可以通过生成一个Student类型的对象的时候直接赋值
    * @param id
    * @param name
    * @param age
    */
    public Student(int id, String name, int age) {
    this.id = id;
    this.name = name;
    this.age = age;
    }

    /**
    * 无参构造
    */
    public Student(){

    }

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

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

    public int getAge() {
    return age;
    }

    public void setAge(int age) {
    this.age = age;
    }
    }

    第二步:在其他类里通过生成一个Student类的对象来调用:

    //通过生成一个对象并用set方法赋值,get得到
    Student student = new Student();
    student.setId(1);
    student.setName("</nbsp>");
    student.setAge(18);
    //通过有参构造来赋值
    Student student1 = new Student(student.getId(),student.getName(),student.getAge());

      这里首先是给变量student赋值,然后又通过set方法拿到student的内部的各个属性值又通过有参构造的方式赋值给了student1。
    总结起来就是这样给实体类对象里的属性赋值或者得到实体类对象里的属性值。希望对大家有所帮助。

    另附一段没有单设属性类直接在一个类中赋值与获取的代码,刚入门的朋友可以看看,自己感觉有点麻烦不如单设属性类方便,大家自我斟酌吧。



    public class TestInstance {
        public class Product{

              public String name;

          public string age;

        public int count;

        public int number;

        }
        public static void main(String[] args) throws NoSuchMethodException,
                SecurityException, IllegalAccessException,
                IllegalArgumentException, InvocationTargetException {
            // TODO Auto-generated method stub
            Product model = new Product("sss", "11", 3, 4);
            Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
            // 遍历所有属性
            for (int j = 0; j < field.length; j++) {
                String name = field[j].getName();
                name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法
                String type = field[j].getGenericType().toString(); // 获取属性的类型
                if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名
                    Method m = model.getClass().getMethod("get" + name);
                    String value = (String) m.invoke(model); // 调用getter方法获取属性值
                    if (value == null) {
                        m = model.getClass().getMethod("set" + name, String.class);
                        m.invoke(model, "");
                    }else {
                        System.out.println(value);
                    }
                }
                if (type.equals("class java.lang.Integer")||type.equals("int")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Integer value = (Integer) m.invoke(model);
                    if (value == null) {
                        m = model.getClass().getMethod("set" + name, Integer.class);
                        m.invoke(model, 0);
                    }
                    else {
                        System.out.println(value);
                    }
                }
                if (type.equals("class java.lang.Boolean")||type.equals("boolean")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Boolean value = (Boolean) m.invoke(model);
                    if (value == null) {
                        m = model.getClass().getMethod("set" + name, Boolean.class);
                        m.invoke(model, false);
                    }
                    else {
                        System.out.println(value);
                    }
                }
                if (type.equals("class java.util.Date")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Date value = (Date) m.invoke(model);
                    if (value == null) {
                        m = model.getClass().getMethod("set" + name, Date.class);
                        m.invoke(model, new Date());
                    }
                    else {
                        System.out.println(value);
                    }
                }
                if (type.equals("double")) {
                    Method m = model.getClass().getMethod("get" + name);
                    double value = (double) m.invoke(model);
                    System.out.println(value);
                }
            }
        }
    }

  • 相关阅读:
    Permission Denial: opening provider 隐藏的android:exported属性的含义
    GPL & Apache License
    JAVA把毫秒数转换成日期
    Android开发–Intent-filter属性详解
    [转]unix/linux中的dup()系统调用
    【转载】技术的正宗与野路子
    virtualbox -centos ping不通外网
    GNU Make 手册中文版
    Git源码学习
    git-gui
  • 原文地址:https://www.cnblogs.com/zhangdiIT/p/5685115.html
Copyright © 2011-2022 走看看