「java获取指定属性的值」java 获取数据类型

博主:adminadmin 2023-03-20 11:26:07 243

本篇文章给大家谈谈java获取指定属性的值,以及java 获取数据类型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java field获取值

很多朋友都想知道java field怎么获取值?下面就一起来了解一下吧~

定义

public Object get(Object obj)

1. 如果字段不是静态字段的话,要传入反射类的对象.如果传null是会报java.lang.NullPointerException 

2. 如果字段是静态字段的话,传入任何对象都是可以的,包括null 

例子

1. 获取属性的值

public static void main(String[] args) throws Exception {     //使用反射第一步:获取操作类FieldDemo所对应的Class对象     Class cls = Class.forName("com.testReflect.FieldDemo");     //使用FieldDemo类的class对象生成 实例     Object obj = cls.newInstance();     //通过Class类中getField(String name): 获取类特定的方法,name参数指定了属性的名称     Field field = cls.getField("num1");     //拿到了Field类的实例后就可以调用其中的方法了     //方法:get(Object obj) 返回指定对象obj上此 Field 表示的字段的值     System.out.println("属性值:  " + field.get(obj));     //方法: set(Object obj, Object value)  将指定对象变量上此 Field 对象表示的字段设置为指定的新值     field.set(obj, 55);     System.out.println("修改属性值后 -- get(Object obj):  " + field.get(obj)); }

2. get()传值

class A {        int fild=3;       static int staticFild=4;   }  public class FiledTest   {       public static void main(String[] args) throws Exception       {           Field field=A.class.getDeclaredField("fild");           int a= (Integer)field.get(new A()) ;   //        int c= (Integer)field.get(null) ; //不是静态字段不能传null           System.out.println(a);              Field staticfield=A.class.getDeclaredField("staticFild");           int b= (Integer)staticfield.get("") ;           int d= (Integer)staticfield.get(null) ;           System.out.println(b);           System.out.println(d);       }   }

运行结果: 3  4  4

Java获取泛型对象中的某个属性值

首先做一个接口,接口中声明需要的取值方法

然后做你要的实际的类,每个类实现不同的取值方法

然后list通过接口进行定义,将每个实际类的对象insert到list中间

然后利用多态实现动态的方法绑定,实现你的需求

java反射获取属性值

java反射获取属性值是怎样的呢?一起来看下吧:

反射获取Java类的所有字段,包括所有父类中的字段。类自身的字段可直接通过方法getDeclaredFields()(获取所有修饰符字段)或者getFields()(获取public修饰的字段)获取,但父类中的字段暂时没有发现直接获取的方式。 需要递归获取所有的父类,然后获取他们的字段,最终获取到类的所有字段。 

如果要获取字段值,则需要设置字段可访问:field.setAccessible(true);  field为reflect包下的Field类

案例:

1、父类

package com.carl.study.springboot.bean;   import lombok.Data; import lombok.experimental.Accessors;   /**  * @author changez  * @desc  * @date 2019/3/10 11:30  */ @Data @Accessors(chain = true) public class BeanBasic {    private Integer id;  private Long createTime;  private Long updateTime; }

2、子类

package com.carl.study.springboot.bean;   import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import lombok.experimental.Accessors;   /**  * @author changez  * @desc  * @date 2019/3/10 11:17  */ @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Accessors(chain = true) public class Student extends BeanBasic{    private String name;  private String address; }

3、测试类

package test.lombok;   import com.carl.study.springboot.bean.Student; import org.junit.Test;   import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List;   /**  * @author changez  * @desc Java反射获取类的所有属性.  * @date 2019/3/10 11:41  */ public class LombokTest {    @Test  public void getParentField(){   Student stu1 = new Student();   stu1.setName("student-name")    .setAddress("student1-address")    .setId(1)    .setCreateTime(20190310140423L)    .setUpdateTime(20190310140423L)   ;     Class clazz = Student.class;   List allFields = new ArrayList(100);     // 获取当前对象的所有属性字段   // clazz.getFields():获取public修饰的字段   // clazz.getDeclaredFields(): 获取所有的字段包括private修饰的字段   allFields.addAll(Arrays.asList(clazz.getDeclaredFields()));     // 获取所有父类的字段, 父类中的字段需要逐级获取   Class clazzSuper = clazz.getSuperclass();     // 如果父类不是object,表明其继承的有其他类。 逐级获取所有父类的字段   while (clazzSuper != Object.class) {    allFields.addAll(Arrays.asList(clazzSuper.getDeclaredFields()));    clazzSuper = clazzSuper.getSuperclass();   }     allFields.stream().forEach(field - {      // 设置字段可访问, 否则无法访问private修饰的变量值    field.setAccessible(true);    try {     // 获取字段名称     String fieldName = field.getName();       // 获取指定对象的当前字段的值     Object fieldVal = field.get(stu1);     System.out.println(fieldName+"="+fieldVal);    } catch (IllegalAccessException e) {     e.printStackTrace();    }   });  } }

关于java获取指定属性的值和java 获取数据类型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。