首页 > 其他分享 >3.反射

3.反射

时间:2023-09-15 22:55:18浏览次数:43  
标签:反射 对象 列表 参数 null 属性

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制。

一个反射解析器:

运用泛型、反射、集合类等相关知识实现一个API参数解析器

String queryString="Cpu=2&Memory=4.0&AutoCreated=null&Container.1.Name=nginx&Container.1.Command.1=/bin/sh"

 请根据规则将上述queryString字符串自动映射到对象的字段上,以下是参数接收对象,对象中的属性只提供了get方法,不提供set方法,请通过反射设置对应的属性值,Pod对象默认提供了无参构造方法。

1.字段Class类型可以是八种原始类型以及对应的包装类、String、BigDecimal以及自定义Object,列表参数只需使用ArrayList实现即可,无须支持其它Array、Map等数据结构。

2.queryString中的键key都是大写开头,对象中的属性必须是小写字母开头符合规范,需自动适配,如果参数中的键值key是小写字符开头,请自动忽略,如参数中有cpu=2,此时不应该将该值赋给对象中属性cpu,必须要求参数key都是大写的即Cpu=2才进行适配。

3.通过自定义注解 SkipMappingValueAnnotation标注在属性上,工具类则不处理该属性,不去覆盖对象默认值,这个注解在后面以定义好,请勿修改类名以及包名,直接复制到工程中即可。

4.当发现对应的value是null或者字符串"NULL","null"、"Null"时,能正确处理原始类型默认值,此时如果参数中传递了AutoCreated=null字符串,需自动将对象中的autoCreated设置为false。

5.当属性字段是一个列表类型时,请按照N进行排序,此时如下应该生成2个对象的列表List<Container>,赋值给pod对象中的container字段,Container.1.Name中间的数字没有实际意义,只是用来决定其在列表中的顺序,数字越小,在列表中的下标越小,如下 nginx对应的对象是列表中第一个对象,下标为0,紧随其后的是redis。

 

标签:反射,对象,列表,参数,null,属性
From: https://www.cnblogs.com/cjhtxdy/p/17700068.html

相关文章

  • 第二十章 反射机制
    20.1基本概念通常情况下编写代码都是固定的,无论运行多少次执行的结果也是固定的,在某些特殊场合中编写代码时不确定要创建什么类型的对象,也不确定要调用什么样的方法,这些都希望通过运行时传递的参数来决定,该机制叫做动态编程技术,也就是反射机制。通俗来说,反射机制就是用于动......
  • 反射机制
    第17章_反射机制11.反射(Reflection)的概念1.1反射的出现背景Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。//使用反射完成publicvoidtest1()throwsException{//1.创建Person类的实例public......
  • JavaSE--反射机制
    一、反射机制  java.lang.reflect.*;1、反射机制的作用  通过java语言中的反射机制可以操作字节码文件,可以读和修改字节码文件。  通过反射机制可以操作代码片段(class文件)2、反射机制相关的类  java.lang.Class:代表整个字节码,代表一个类型,代表整个类  java.lang.......
  • Java 中的反射与注解
    一、反射Reflection和元类ClassClass元类是对普通类的抽象,是类的类。Class包含了一个类的所有属性,包括类名、包名、父类、实现的接口、所有方法、属性等。拿到一个类的Class元类,就拿到了这个类所有信息,就可以通过这些信息动态做一些处理。通过一个类的Class实例获取类......
  • 使用反射修改bean的属性值报错
    前段时间在使用spring的ReflectionUtils工具类中的doWithFields()方法时,报了一个无法修改private修饰的字段的错误,报错信息如下:java.util.concurrent.ExecutionException:java.lang.IllegalStateException:Notallowedtoaccessfield'xxx':java.lang.IllegalAccessException......
  • 用友NC v6.5 反射型xss
    漏洞描述用友NC6.5版本存在反射型xss漏洞复现fofa语法:app="用友-UFIDA-NC"访问页面:POC:/uapws/pages/error.jsp?msg=<script>alert(1)</script>......
  • 【Java基础增强】类加载器和反射
    1.类加载器1.1类加载器【理解】作用负责将.class文件(存储的物理文件)加载在到内存中1.2类加载的过程【理解】类加载时机创建类的实例(对象)调用类的类方法访问类或者接口的类变量,或者为该类变量赋值使用反射方式来强制创建某个类或接口对应的java.lang.Class对象初始化某个类的子类直......
  • java反射
    直接new对象就叫正射如下Map<String,String>map=newHashMap<>();map.put("两年半","唱跳rap篮球");正射,LinkedHashMap效果更好,然后你修改代码Map<String,String>map=newLinkedHashMap<>();map.put("两年半","唱跳rap篮球");发现用Linke......
  • 20230602 反射中的泛型信息
    介绍Java泛型的突出特性之一是在虚拟机中擦除泛型类型,但是擦除的类仍然保留原先泛型的一些微弱记忆。例如,原始Pair类知道它源自于泛型类Pair<T>,尽管无法区分是Pair<String>还是Pair<Integer>为了描述泛型类型声明,java.lang.reflect包中提供了接口Type,包含以下子类型......
  • [个人笔记][C#]反射和特性学习笔记
    反射通过Type类型的实例来访问类型的元数据通过obj.GetType()或typeof()获取一个Type类型的实例在Type类型的实例上通过GetProperties(),GetMethods(),GetCustomAttributes()访问类型的各种东西GetType()只能在实例上调用,typeof()给一个类型名就行,它是在编译时求值的验证一个......