精华内容
下载资源
问答
  • 2021-03-17 17:22:27

    下面的示例使用反射获取类对象的字段。我们将获取字段名称及其对应的类型。下面显示了三种可用于获取对象字段的方式:Class.getDeclaredFields()

    Class.getFields()

    Class.getField(String)package org.nhooo.example.lang;

    import java.util.Date;

    import java.lang.reflect.Field;

    public class GetFields {

    public Long id;

    protected String name;

    private Date birthDate;

    Double weight;

    public static void main(String[] args) {

    GetFields object = new GetFields();

    Class clazz = object.getClass();

    // 获取所有对象字段,包括公共的,受保护的,打包的和私有的

    // 访问字段。

    Field[] fields = clazz.getDeclaredFields();

    System.out.println("Number of fields = " + fields.length);

    for (Field field : fields) {

    System.out.println("Field name = " + field.getName());

    System.out.println("Field type = " + field.getType().getName());

    }

    System.out.println("n----------------------------------------n");

    // 获取所有对象可访问的公共字段。

    fields = clazz.getFields();

    System.out.println("Number of fields = " + fields.length);

    for (Field field : fields) {

    System.out.println("Field name = " + field.getName());

    System.out.println("Field type = " + field.getType().getName());

    }

    System.out.println("n----------------------------------------n");

    try {

    // 使用公共访问修饰符获取字段名称ID

    Field field = clazz.getField("id");

    System.out.println("Field name = " + field.getName());

    System.out.println("Field type = " + field.getType().getName());

    } catch (NoSuchFieldException e) {

    e.printStackTrace();

    }

    }

    }

    更多相关内容
  • Java的获取注解值       1自定义注解   1字段注解 import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang....

    Java的获取注解值

     

     

     

    1自定义注解

     

    • 1字段注解
    
    import java.lang.annotation.Documented;
    
    import java.lang.annotation.ElementType;
    
    import java.lang.annotation.Retention;
    
    import java.lang.annotation.RetentionPolicy;
    
    import java.lang.annotation.Target;
    
    
    
    @Documented
    
    @Target({ElementType.FIELD}) //注解应用类型
    
    @Retention(RetentionPolicy.RUNTIME) // 注解的类型
    
    public @interface FieldInterface {
    
    
    
    String name() default "";
    
    }

     

     

    •  方法注解


     

    
    import java.lang.annotation.Documented;
    
    import java.lang.annotation.ElementType;
    
    import java.lang.annotation.Retention;
    
    import java.lang.annotation.RetentionPolicy;
    
    import java.lang.annotation.Target;
    
    
    
    @Documented // 标记在生成javadoc时是否将注解包含进去,可有可无
    
    @Target({ElementType.METHOD}) //注解应用类型
    
    @Retention(RetentionPolicy.RUNTIME) // 注解的类型
    
    
    
    public @interface MethodInterface {
    
    
    
    String name() default "";
    
    }
    
    

     

     

    2新建实体类

    public class TestClass {
    
    
    
    @FieldInterface(name = "字段注解")
    
    private String name = "ls";
    
    private Constructor<?>[] declaredConstructors;
    
    
    
    @MethodInterface(name = "方法注解")
    
    public void isNot() {
    
    
    
    }
    
    }

     

    3获取注解值

    使用反射机制电子杂志注解值


     

    	public void getMethodAnnotationValue() {
    		// 获取所有的方法
    		Method[] name = TestClass.class.getDeclaredMethods();
    
    		for (Method str : name) {
    			// 判断是否方法上存在注解
    			boolean annotationPresent = str.isAnnotationPresent(MethodInterface.class);
    
    			if (annotationPresent) {
    				// 获取自定义注解对象
    				MethodInterface methodAnno = str.getAnnotation(MethodInterface.class);
    
    				// 根据对象获取注解值
    				String isNotNullStr = methodAnno.name();
    				 
    				System.out.println(isNotNullStr);
    
    			}
    
    		}
    
    	}
    
    	public void getFieldAnnotationValue() throws NoSuchFieldException, SecurityException {
    		// 获取所有的字段
    		Field[] fields = TestClass.class.getDeclaredFields();
    
    		for (Field f : fields) {
    			// 判断字段注解是否存在
    			boolean annotationPresent2 = f.isAnnotationPresent(FieldInterface.class);
    
    			if (annotationPresent2) {
    
    				FieldInterface name = f.getAnnotation(FieldInterface.class);
    				// 获取注解值
    				String nameStr = name.name();
    
    				System.out.println(nameStr);
    			}
    
    		}
    
    	}

     

    4进行测试

    public static void main(String[] args) throws NoSuchFieldException, SecurityException {
    
    
    
    TestClass c = new TestClass();
    
    // 获取方法上的注解值
    
    c.getMethodAnnotationValue();
    
    // 获取字段上的注解值
    
    c.getFieldAnnotationValue();
    
    
    
    }
    
    

      

    结果

      自定义注解详细

    获取注解值详细

     

    展开全文
  • 通过反射获得实体字段和值
  • java 反射获取类字段名与值

    千次阅读 2020-04-26 11:24:51
    循环获取类所有: public static void main(String[] args) throws Exception { //entity Student s = new Student(); s.name = "11"; s.address="老街"; getAll(s); getOne(s,"address"); } /** ...

    简单方法一:
    循环获取类所有:

    public static void main(String[] args) throws Exception {
    		//entity
    		Student s = new Student();
    		s.name = "11";
    		s.address="老街";
    		getAll(s);
    		getOne(s,"address");
    
    	}
    	
    	/**
    	 * 获取所有字段
    	 * @param object
    	 * @throws Exception
    	 */
    	public static void getAll (Object object) throws Exception {
    	
    		System.out.println("--------获取所有字段:名:值------------");
    		for (Field field : object.getClass().getDeclaredFields()) {
                field.setAccessible(true);
                System.out.println(field.getName() + ":" + field.get(object) );
           }
    	}
    	
    	/**
    	 * 获取指定字段名,值
    	 * @param object 对象
    	 * @param name 字段名
    	 * @throws Exception
    	 */
    	public static void getOne (Object object,String name) throws Exception {
    		System.out.println("--------获取单个字段:名:值------------");
    		Field field = object.getClass().getDeclaredField(name);
    		System.out.println(field.get(object));
    	}
    
    展开全文
  • 简单demo,导入即可运行。
  • 获取类的所有字段

    千次阅读 2019-01-29 11:22:51
    java获取类字段有两个方法: getFields()是获取的公共字段,包括父类的。 getDeclaredFields()是获取的所有字段,但不包括父类。 如果我想获取和所有父类的全部字段呢??? 我们可以调用...

    java获取类的字段有两个方法:
    getFields()是获取该类的公共字段,包括父类的
    getDeclaredFields()是获取该类的所有字段,但不包括父类

    如果我想获取该类和所有父类的全部字段呢???
    我们可以调用getDeclareFilds(),先拿到该类的所有字段,然后循环的取父类,然后继续调用getDeclareFilds(),这样我们就可以拿到所有的字段了。我们还可以判断下名字,然后排除掉Ojbect类的那一层,代码段如下:

     // 拿到所有的字段
      List<Field> fieldList = new ArrayList<>() ;
      Class tempClass = yourObject.getClass();  
      	 while (tempClass != null && !tempClass.getName().toLowerCase().equals("java.lang.object")){
             fieldList.addAll(Arrays.asList(tempClass.getDeclaredFields()));
             tempClass = tempClass.getSuperclass();
      }
    

    示例代码:
    先准备三个类,里面有public protected,private类型的字段,继承关系如下:

    @Data
    public abstract class Parent {
        public String parentField;
    }
    @Data
    public class Son extends Parent{
        protected String sonField;
    }
    @Data
    public class GrandSon extends Son{
        private String grandSonField;
    }
    

    现在有一个GrandSon类的对象,我们准备获取他所有的字段:

    public static void main(String[] args) throws Exception{
            GrandSon grandSon = new GrandSon();
            grandSon.setGrandSonField("gameloft9");
            grandSon.setSonField("son");
            grandSon.setParentField("parent");
            
            getAllFields(grandSon);
        }
    
        public static void getAllFields(Object request) throws Exception{
            // 拿到所有的字段
            List<Field> fieldList = new ArrayList<>() ;
    
            Class tempClass = request.getClass();
            while (tempClass != null && !tempClass.getName().toLowerCase().equals("java.lang.object")) {
                fieldList.addAll(Arrays.asList(tempClass .getDeclaredFields()));
                tempClass = tempClass.getSuperclass(); // 拿到父类
            }
    
            // 打印出来
            for(Field field:fieldList){
                field.setAccessible(true); // 设置字段的可访问性
                System.out.println(field.getName() + "=" + field.get(request).toString());
            }
        }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • 比如你将实体转Map或者拿到一个Map结果的时候,你是怎么获取某个map的key和value。方法一:声明 String key1="aaa"; key为 key1,value 为map.get(key1); 1 Map<String,Object> map=new HashMap<>(); ...
  • Java获取实体类字段

    千次阅读 2020-10-20 11:33:29
    * 使Function获取序列化能力 */ @FunctionalInterface public interface SFunction<T, R> extends Function<T, R>, Serializable { } 工具 public class SFunctionUtil { public static <T> ...
  • java 获取类中字段值的方法

    千次阅读 2019-01-21 22:44:01
    java获取字段值的方法。 public class BaseEntity&lt;PK&gt; implements Serializable { private PK test1; public PK getTest1() { return test1; } public void setTest1(PK test1) { t...
  • Reflection中文翻译为反射,是.Net中获取运行时类型信息的方式。 Net的应用程序由几个部分:程序集(Assembly)、模块(Module)、类型(class)组成。反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成...
  • 1、实体代码如下 import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.handler.inter.IExcelDataModel; import cn.afterturn.easypoi.handler.inter.IExcelModel; import ...
  • 反射获取类中的指定字段

    千次阅读 2018-08-12 11:21:12
    Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible...
  • 引用空间: System.Reflection.PropertyInfo AnUser anUser = new AnUser(); anUser.Id = "514f275979f64531b7fbbb2f89c8af49"; anUser.UserNo = "5566110"; PropertyInfo[] props = typeof...//实体的字段列表 f
  • java反射获取和父类所有字段

    千次阅读 2021-09-29 22:26:35
    1、getFields():获得某个的所有的公共(public)的字段,包括父类字段。 2、getDeclaredFields():获得某个的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 3、同样类似的...
  • 不说废话直接上代码 /** * @author Sihan Liu */ public class MineBeanUtils { ... * 合并该和对应父类的所有Fields * @param object object * @return List<Field> */ public static List<Field
  • 实现:选择的内容是根据实体类中字段动态获取,其中字段注解的内容就是字段的说明,导出时将作为excle的header 其中获取实体属性及属性固定注解上的内容 实体: @ApiModel(value = "员工信息") @Entity @...
  • 文章目录反射反射概述获取Class对象的三种方法:通过Class.forName()获取class对象,它会把参数指定的加载到内存反射class的信息class对象方法 - 01获取反射的代码示例通过反射技术访问字段(属性方法)并...
  • 实体 public class ProjectBillAttriVo { /*** * 字段1 */ private String colum1; /*** * 字段2 */ private String colum2; /*** * 字段3 */ private String colum3; public String getcolum1...
  • python获取json数据某个字段

    千次阅读 2020-12-29 18:13:13
    Python 怎么获取json 里的特定的某个值有什么放不下,不就是几瓶酒几根烟几个难熬的夜晚。首先我们要导入json包,新建一个对象。 我坐在一块一亿五千万年的石头上,发了一个下午的呆…接着直接调用json.dumps将对象...
  • 第一步,创建一个实体:欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、...
  • } } }//获取字段上的注解值 AnnotationTest03 noon = newAnnotationTest03(); Field[] field= AnnotationTest03.class.getDeclaredFields();if(field != null){for(Field fie : field){if(!fie.isAccessible()){ ...
  • list.stream() 获取实体某个字段

    千次阅读 2021-11-17 10:59:15
    比如我要取 实体列表的id字段;方法有很多,比如for循环,但是代码量比较多;简单的方法就是利用 stream()流处理; 栗子: List<Entity> list= 你的接口; List<Long> collect =list.stream ()....
  • C# 获取实体字段名称和值

    万次阅读 2018-01-11 09:25:53
    // 设置Dictionary 得到实体字段名称和值 public static Dictionary GetProperties(T t) { Dictionary ret = new Dictionary(); if (t == null) { re
  • 一、清理kettle数据库的缓存(推荐使用) 步骤如下:点击主对象树---->DB连接中选说要清理的数据库---->点击右键选中clear DB选项即可 二、删除相关文件 找到自己电脑对应的文件即可 ...
  • 在MongoDB中获取特定的字段

    千次阅读 2021-04-19 01:08:09
    获取特定的字段值,请使用$in运算符。$in选择文档,其中字段的值等于指定数组的任何值。首先让我们创建一个包含文档的集合->db.indexesDemo.createIndex({"StudentFirstName":1});{...
  • 1.@Target:描述注解的使用范围,即用在、方法、变量,它的取值范围定义在ElementType 枚举。 public enum ElementType { // 、接口、枚举 TYPE, // 成员变量(包括:枚举常量) FIELD,
  • 获取list对象的指定字段

    千次阅读 2022-03-25 10:49:11
    List<Long> userId= scheduleStudents.stream().map(User::getUserId).collect(Collectors.toList()); List<Long> ids = list.stream().map(u-> u.getUserId()).collect(Collectors.toList());
  • 利用反射获取任意包下所有、方法、字段的自定义注解信息
  • 1.getFields():获得某个的所有的公共(public)的字段,包括父类字段。2.getDeclaredFields():获得某个的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 3.同样类似的...
  • java反射获得字段和值

    千次阅读 2014-11-12 19:02:51
    //得到的当前实例 //Object obj = clz.newInstance(); if(null!=fields){ for (int i = 0; i ; i++) { System.out.println(fields[i].getName()); } } return fields; } ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,148,309
精华内容 459,323
关键字:

获取类中的字段