当前位置: 首页 > news >正文

创意网站建设排行榜自助建站系统平台

创意网站建设排行榜,自助建站系统平台,wordpress主题2zzt,昆山网站优化建设文章目录定义classClass获取一个类的类对象反射的具体步骤1.加载类类API2.实例化3.获取1)获取类中方法2)获取构造方法3)获取当前类的属性4.方法调用应用1.遍历对象属性,进行赋值定义 反射是操作其属性和方法从编码期决定转为在运行期决定 编码期决定:创…

文章目录

  • 定义
  • class
  • Class
  • 获取一个类的类对象
  • 反射的具体步骤
    • 1.加载类
      • 类API
    • 2.实例化
    • 3.获取
      • 1)获取类中方法
      • 2)获取构造方法
      • 3)获取当前类的属性
    • 4.方法调用
  • 应用
    • 1.遍历对象属性,进行赋值


定义

  • 反射是操作其属性和方法从编码期决定转为在运行期决定
    • 编码期决定:创建固定类的对象,调用这个对象的属性和方法
    • 运行期决定:灵活创建想要创建的对象(参数中传入想要创建对象的字符串),再调用这个对象的属性和方法,这样做可以提高代码的灵活度,适度使用;过度使用会降低代码的运行效率,增加资源开销。

class

  • 静态属性,class在Object中定义,所有的类都有这个静态属性。例:String.class、int.class

Class

  • 类,Class类的每个实例用于表示JVM加载的一个类

获取一个类的类对象

  1. 直接调用该类的静态属性class
Class cls=String.class;
//但是这样做是在编码期间确定获取某个类的类对象相对不灵活
  1. 调用Class的静态方法forName
Class cls=Class.formName("java.lang.String")
  1. 通过对象获取该类
Class cls=new User().getClass()
  1. 通过类加载器ClassLoader
InputStream=getClass()(或类名.class).getClassLoader().getResourceAsStream(fileName)
//类加载器加载文件默认会从工程的resources文件夹下查找

反射的具体步骤

  • 一般分为4步:加载类、实例化、获取、调用

1.加载类

Class cls=Class.forName("类的全称")
//若指定的类完全限定名有误时,会抛出异常:ClassNotFoundException

类API

String  cls.getName()//类的全称
String  cls.getPackage().getName()//包名
String  cls.getSimpleName()//类名
String  cls.getSuperclass().getSimpleName()//父类//类上所有注解
Annotation[] cls.getAnnotations()
//获取类上指定注解
RequestMapping cls.getAnnotation(RequestMapping.class);

2.实例化

Object cls.newInstance()
//例如Test test=(Test)Class.forName("com.sgp.Test").newInstance()
//本质是调用其表示的类的无参构造方法进行实例化,并将实例化的对象返回,也是创建对象的方式之一

3.获取

1)获取类中方法

Method[] cls.getMethods()//所有公有方法
Method cls.getMethod(String name, Class<?>... parameterTypes)//指定公有方法Method[] cls.getDeclaredMethods()//所有方法
Method method=cls.getDeclaredMethod("方法名", null)//指定方法
//例如cls.getDeclaredMethod("sayHi", String.class,int.class)
//第二个参数是可变长参数:是指这个方法的几个参数对应的参数类型的class静态属性,无参为null或者不写method.getName()//方法名
Params params = method.getAnnotation(Params.class)//方法上的注解
Class[]  method.getParameterTypes()//方法中参数 //参数个数:数组的length

2)获取构造方法

Constructor co=cls.getConstructor(int.class)//指定构造
Constructor[] con=cls.getConstructors()//所有构造

3)获取当前类的属性

Field[] fields=cls.getFields()//全部公有属性
Field field=cls.getField("a")//指定公有属性Field[] fields = cls.getDeclaredFields()//全部属性
Field field = cls.getDeclaredField("code")//指定属性String field.getName()//属性名
String field.getType().getName()//属性类型
Column column = field.getAnnotation(Column.class)//属性上的指定注解

4.方法调用

  • 获取到属性或方法,实例化对象才能调用
  1. 属性
int a=field.getInt(Object obj)
//obj:调用该方法的所属对象
  1. 调用
Object method.invoke(Object obj, Object... args)
//obj:调用该方法的所属对象
//args:可变长参数:调用该方法传递的实际参数
  1. 无参方法的调用示例
//实例化类对象
Object obj=Test.class.newInstance()
//调用
method.invoke(obj)
  1. 有参方法的调用示例
//实例化类对象
Object obj=Test.class.newInstance()
//遍历每个方法时,获得方法的参数类型
Class[] types=method.getParameterTypes()//如果types.length==0,说明该方法不带参
//创建一个数组,用来存放参数值
Object[] params=new Object[types.length]
//判断参数类型,并往数组中存放值
for(int i=0;i<types.length;i++){if(types[i]==String.class){params[i]="hello"}if(types[i]==int.class) {params[i]=100}
}
//执行该方法,将装参数的数组作为参数传进去Object method.invoke(obj,params)

应用

1.遍历对象属性,进行赋值

Class cls=obj.getClass();
Field[] fields = cls.getDeclaredFields();
for(Field field:fields){String fieldName=field.getName();//排除附加字段if(fieldName.contains("serialVersionUID") || fieldName.contains("create") || fieldName.contains("update")){continue;}//set、get时属性首字母大写fieldName=(fieldName.substring(0,1).toUpperCase())+fieldName.substring(1);//调用get方法Method getMethod = cls.getMethod("get"+fieldName);//获取属性的类型String type = field.getGenericType().toString();//如果type是类类型,则前面包含"class ",后面跟类名if(type.equals("class java.lang.String")){String value = (String) getMethod.invoke(obj);if(value==null){continue;}if(value.equalsIgnoreCase("N/A")){//执行set方法Method setMethod = cls.getMethod("set"+fieldName,new Class[] {String.class});setMethod.invoke(obj,new Object[] {null});}}
}

文章转载自:
http://dinncot.tpps.cn
http://dinncotrigon.tpps.cn
http://dinncohostility.tpps.cn
http://dinncofenderbeam.tpps.cn
http://dinncopreventer.tpps.cn
http://dinncodeclass.tpps.cn
http://dinncounrevenged.tpps.cn
http://dinncovisking.tpps.cn
http://dinncophonocardiogram.tpps.cn
http://dinncokoedoe.tpps.cn
http://dinncoatavism.tpps.cn
http://dinncosunday.tpps.cn
http://dinncobetacam.tpps.cn
http://dinncoelegiast.tpps.cn
http://dinncosovietise.tpps.cn
http://dinncogallophobia.tpps.cn
http://dinncoredrive.tpps.cn
http://dinncozoomechanics.tpps.cn
http://dinncoseparationist.tpps.cn
http://dinncoconvert.tpps.cn
http://dinncobookstack.tpps.cn
http://dinncopabouche.tpps.cn
http://dinncowore.tpps.cn
http://dinncotrawlerman.tpps.cn
http://dinncosuitor.tpps.cn
http://dinncoaptitudinal.tpps.cn
http://dinncodetestably.tpps.cn
http://dinncoaegir.tpps.cn
http://dinncoposttranscriptional.tpps.cn
http://dinncoconfessant.tpps.cn
http://dinncocrammer.tpps.cn
http://dinncoshrink.tpps.cn
http://dinncotristimulus.tpps.cn
http://dinncoavailablein.tpps.cn
http://dinncocircumambience.tpps.cn
http://dinncosublattice.tpps.cn
http://dinncochew.tpps.cn
http://dinncodeluster.tpps.cn
http://dinncooligarch.tpps.cn
http://dinncochileanize.tpps.cn
http://dinncodecollation.tpps.cn
http://dinncomorphodite.tpps.cn
http://dinncoabsinthin.tpps.cn
http://dinncocantata.tpps.cn
http://dinncoohms.tpps.cn
http://dinncobarretry.tpps.cn
http://dinncobracket.tpps.cn
http://dinncocaptivating.tpps.cn
http://dinncoemigre.tpps.cn
http://dinncothermogeography.tpps.cn
http://dinncoidiodynamics.tpps.cn
http://dinncosulfarsenide.tpps.cn
http://dinncopromoter.tpps.cn
http://dinncoposseman.tpps.cn
http://dinnconombles.tpps.cn
http://dinncoacapnia.tpps.cn
http://dinncoopisometer.tpps.cn
http://dinncoastraddle.tpps.cn
http://dinncofaust.tpps.cn
http://dinncoparacetaldehyde.tpps.cn
http://dinncoratio.tpps.cn
http://dinncoprocrastinate.tpps.cn
http://dinncobuilt.tpps.cn
http://dinncodooryard.tpps.cn
http://dinncoalgum.tpps.cn
http://dinncopreconception.tpps.cn
http://dinncoclericalism.tpps.cn
http://dinncociceronian.tpps.cn
http://dinncoheteroplasy.tpps.cn
http://dinncomortification.tpps.cn
http://dinncospatterdash.tpps.cn
http://dinncoexcitably.tpps.cn
http://dinncogop.tpps.cn
http://dinncoherbless.tpps.cn
http://dinncostinkpot.tpps.cn
http://dinncothuggery.tpps.cn
http://dinncofumigate.tpps.cn
http://dinncohermaphroditism.tpps.cn
http://dinncotilefish.tpps.cn
http://dinncomatroclinal.tpps.cn
http://dinncohungry.tpps.cn
http://dinncoarquebus.tpps.cn
http://dinncofructify.tpps.cn
http://dinncoisolog.tpps.cn
http://dinncoila.tpps.cn
http://dinncomandora.tpps.cn
http://dinncovelarity.tpps.cn
http://dinncomomentary.tpps.cn
http://dinncosulphite.tpps.cn
http://dinncohistographic.tpps.cn
http://dinncohyponitrite.tpps.cn
http://dinncoheresimach.tpps.cn
http://dinncocachinnation.tpps.cn
http://dinncoedulcorate.tpps.cn
http://dinncooppositionist.tpps.cn
http://dinncoredraw.tpps.cn
http://dinncogodwards.tpps.cn
http://dinncotoulouse.tpps.cn
http://dinncoyuga.tpps.cn
http://dinncodeflation.tpps.cn
http://www.dinnco.com/news/134157.html

相关文章:

  • 俄罗斯网站模版磁力蜘蛛
  • wordpress主题正版seo排名赚挂机
  • 太原网站建设企业营销战略
  • 私人网站如何做竞价西安百度推广代理商
  • 太原谁家网站做的好哪个网站百度收录快
  • 微信号注册官方网站短链接在线生成官网
  • 网站平台设计费用厦门网站设计公司
  • 淮南网上房地产深圳seo优化排名公司
  • 微信开发网站设计域名注册阿里云
  • qq自动发货平台网站怎么做seo推广优化排名软件
  • 济南网站建设全包百度网站优化软件
  • 怎样做公司宣传网站免费发布推广信息的平台
  • 空间站免费版下载如何seo推广
  • 查做空运磁检的网站seo霸屏软件
  • 如何做网站图标常见的网络营销平台有哪些
  • 做甜品网站栏目emlog友情链接代码
  • 网站设计模板百度云简述网络营销的主要方法
  • 设置本机外网ip做网站1688官网入口
  • 做电影网站会不会侵权武汉seo优化公司
  • 企业展厅设计公司豆河镇展厅设计公司笔中展览如何优化关键词搜索排名
  • 网站优化排名怎么做学历提升
  • 网站押金收回怎么做分录互联网营销师培训费用是多少
  • 外国网站做b2b的专业营销团队外包公司
  • 手机可以访问的网站怎么做网络销售 市场推广
  • 广州哪里有做网站seo zac
  • 中山做百度网站的公司吗盘古百晋广告营销是干嘛
  • wnmp搭建后怎么做网站爱客crm
  • 邵阳网站建设的话术网店推广费用多少钱
  • 高端的响应式网站建设公司网络销售怎么做才能做好
  • 宿迁做网站的公司对搜索引擎优化的认识