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

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

  1. public class Student {
    //编号
    private int id;
    //姓名
    private String name;
    //年龄
    private int age;
  2.  
  3. /**
    * 有参构造,可以通过生成一个Student类型的对象的时候直接赋值
    * @param id
    * @param name
    * @param age
    */
    public Student(int id, String name, int age) {
    this.id = id;
    this.name = name;
    this.age = age;
    }
  4.  
  5. /**
    * 无参构造
    */
    public Student(){
  6.  
  7. }
  8.  
  9. public int getId() {
    return id;
    }
  10.  
  11. public void setId(int id) {
    this.id = id;
    }
  12.  
  13. public String getName() {
    return name;
    }
  14.  
  15. public void setName(String name) {
    this.name = name;
    }
  16.  
  17. public int getAge() {
    return age;
    }
  18.  
  19. public void setAge(int age) {
    this.age = age;
    }
    }

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

  1. //通过生成一个对象并用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());
  2.  
  3.   这里首先是给变量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);
            }
        }
    }
}

java 获取实体类对象属性值的方法的更多相关文章

  1. C# 反射(GetType) 获取动态Json对象属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复 ...

  2. java利用反射动态获取实体类的属性值

    直接贴代码吧,有需要的话,可以根据自己的需要修改部分代码: public BigDecimal getByAttributeName(ThmdGwqriR thmdGwqriR, String att ...

  3. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

  4. java反射获取和设置实体类的属性值 递归所有父类

    最近做一个通用数据操作接口,需要动态获取和设置实体类的属性值,为了通用实体做了多重继承,开始网上找到代码都不支持父类操作,只能自己搞一个工具类了,此工具类可以设置和获取所有父类属性,代码贴下面拿走不谢 ...

  5. C#通过属性名字符串获取、设置对象属性值

    之前理工项目从这个博客找到了相对应的方法:C#通过属性名字符串获取.设置对象属性值 https://www.cnblogs.com/willingtolove/p/12198871.html

  6. java遍历实体类的属性和数据类型以及属性值

    遍历实体类的树形和数据类型一级属性值 /** * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws ...

  7. 【转】java遍历实体类的属性和数据类型以及属性值

    和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...

  8. java后台实体类设置默认值

    private String orderPrice;//定义类的属性 /* * get set方法 * String.trim() 返回字符串的副本,忽略前导空白和尾部空白. */ public St ...

  9. solr搜索结果转实体类对象的两种方法

    问题:就是把从solr搜索出来的结果转成我们想要的实体类对象,很常用的情景. 1.使用@Field注解 @Field这个注解放到实体类的属性[字段]中,例如下面 public class User{ ...

随机推荐

  1. Oracle存储过程基本语法

    一.形式 1 CREATE OR REPLACE PROCEDURE 存储过程名  //是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 2 IS   ...

  2. Magento在IE下登陆不了后台,在Firefox下正常

    目前的解决办法如下: 方法一,用FF登陆后台,在 System—Configuration-Web-Session Cookie management....timeout 改为:86400 方法二: ...

  3. html 遇到margin居中的问题

    今天在写div时发现不居中, div{ margin:0 auto; } 那么给div一个固定的宽度,就会居中了 div{ margin:0 auto; width:500px; }

  4. jsb游戏闪退 ScriptingScore::executeFunctionWithOwner 出错

    Assertion failure: thing, at...gc/Marking.cpp:112 遇到个jsb的bug,全公司的人整整折腾了2天!! 描述: 下面代码,在GC后,程序崩溃,错误log ...

  5. postgresql基本操作:查看数据库、索引、表、表空间大小

    一.简介 PostgreSQL 提供了多个系统管理函数来查看表,索引,表空间及数据库的大小,下面详细介绍一下. 二.数据库对象尺寸函数 函数名 返回类型 描述 pg_column_size(any) ...

  6. sublime text3 本地化

    博客園中搜到n篇 同題日誌 沒一篇靠譜 超級反感這種行為,浪費別人的時間無異於謀財害命 自動: Control+` (注意不是cmd+p) import urllib.request,os,hashl ...

  7. TNF-mutithread 编译过程记录

    地址 https://github.com/msng4t/TNF-mutithread 地址 https://github.com/msng4t/TNF 目的:想要寻找一套性能,可读性相对较好的Soc ...

  8. 在VS2010下配置OpenCV 2.3

    一.下载OpenCV 2.3:       http://www.opencv.org.cn/download/OpenCV-2.3.0-win-superpack.exe   二.解压 将下载的Op ...

  9. tools/build.c

    /* *  linux/tools/build.c * *  Copyright (C) 1991, 1992  Linus Torvalds */ /* * This file builds a d ...

  10. JQ添加移除css样式--转载 心存善念

    我们常常要使用Javascript来改变页面元素的样式.其中一种办法是改变页面元素的CSS类(Class),这在传统的Javascript里,我们通常是通过处理HTML Dom的classname特性 ...