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

凤城网站建设关键词查询网站的工具

凤城网站建设,关键词查询网站的工具,郑州网站建设专家,要制作网页文章目录 反射机制介绍获取 Class 对象的四种方式代码实例静态编译和动态编译反射机制优缺点反射的应用场景 反射机制介绍 JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能…

文章目录

  • 反射机制介绍
  • 获取 Class 对象的四种方式
  • 代码实例
  • 静态编译和动态编译
  • 反射机制优缺点
  • 反射的应用场景

反射机制介绍

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

获取 Class 对象的四种方式

如果我们动态获取到这些信息,我们需要依靠 Class 对象。Class 类对象将一个类的方法、变量等信息告诉运行的程序。Java 提供了四种方式获取 Class 对象:

1.知道具体类的情况下可以使用:

Class alunbarClass = TargetObject.class;

但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取 Class 对象,通过此方式获取Class对象不会进行初始化

2.通过 Class.forName()传入类的路径获取:

Class alunbarClass1 = Class.forName("cn.javaguide.TargetObject");

Class.forName(className)方法,内部实际调用的是一个native方法 forName0(className, true, ClassLoader.getClassLoader(caller), caller);

第2个boolean参数表示类是否需要初始化,Class.forName(className)默认是需要初始化。

一旦初始化,就会触发目标对象的 static块代码执行,static参数也会被再次初始化。

3.通过对象实例instance.getClass()获取:

Employee e = new Employee();
Class alunbarClass2 = e.getClass();

4.通过类加载器xxxClassLoader.loadClass()传入类路径获取

class clazz = ClassLoader.LoadClass("cn.javaguide.TargetObject");

通过类加载器获取Class对象不会进行初始化,意味着不进行包括初始化等一些列步骤,静态块和静态对象不会得到执行

代码实例

简单用代码演示一下反射的一些操作!

1.创建一个我们要使用反射操作的类 TargetObject

package cn.javaguide;public class TargetObject {private String value;public TargetObject() {value = "JavaGuide";}public void publicMethod(String s) {System.out.println("I love " + s);}private void privateMethod() {System.out.println("value is " + value);}
}

2.使用反射操作这个类的方法以及参数

package cn.javaguide;import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class Main {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchFieldException {/*** 获取TargetObject类的Class对象并且创建TargetObject类实例*/Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");TargetObject targetObject = (TargetObject) tagetClass.newInstance();/*** 获取所有类中所有定义的方法*/Method[] methods = tagetClass.getDeclaredMethods();for (Method method : methods) {System.out.println(method.getName());}/*** 获取指定方法并调用*/Method publicMethod = tagetClass.getDeclaredMethod("publicMethod",String.class);publicMethod.invoke(targetObject, "JavaGuide");/*** 获取指定参数并对参数进行修改*/Field field = tagetClass.getDeclaredField("value");//为了对类中的参数进行修改我们取消安全检查field.setAccessible(true);field.set(targetObject, "JavaGuide");/*** 调用 private 方法*/Method privateMethod = tagetClass.getDeclaredMethod("privateMethod");//为了调用private方法我们取消安全检查privateMethod.setAccessible(true);privateMethod.invoke(targetObject);}
}

输出内容:

publicMethod
privateMethod
I love JavaGuide
value is JavaGuide

注意 : 有读者提到上面代码运行会抛出 ClassNotFoundException 异常,具体原因是你没有下面把这段代码的包名替换成自己创建的 TargetObject 所在的包 。

Class<?> tagetClass = Class.forName("cn.javaguide.TargetObject");

静态编译和动态编译

  • 静态编译: 在编译时确定类型,绑定对象
  • 动态编译: 运行时确定类型,绑定对象

反射机制优缺点

  • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。
  • 缺点: 1,性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的 java 代码要慢很多。2,安全问题,让我们可以动态操作改变类的属性同时也增加了类的安全隐患。

反射的应用场景

反射是框架设计的灵魂。

在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架也大量使用到了反射机制。

举例:

  1. 我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序;
  2. Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
  3. 动态配置实例的属性;

文章转载自:
http://unwieldiness.c7623.cn
http://kinesis.c7623.cn
http://methodological.c7623.cn
http://rdac.c7623.cn
http://darkle.c7623.cn
http://nonsuch.c7623.cn
http://roseanna.c7623.cn
http://aldohexose.c7623.cn
http://kickout.c7623.cn
http://ninnyhammer.c7623.cn
http://woodenware.c7623.cn
http://sauceboat.c7623.cn
http://enervated.c7623.cn
http://acanthocephalan.c7623.cn
http://anopheles.c7623.cn
http://artisanate.c7623.cn
http://physicky.c7623.cn
http://audibility.c7623.cn
http://serotaxonomy.c7623.cn
http://ecumene.c7623.cn
http://hangup.c7623.cn
http://structural.c7623.cn
http://adjectivally.c7623.cn
http://tsade.c7623.cn
http://euphuist.c7623.cn
http://intactness.c7623.cn
http://longeur.c7623.cn
http://fingerbreadth.c7623.cn
http://nicol.c7623.cn
http://preceptory.c7623.cn
http://stitches.c7623.cn
http://affirmation.c7623.cn
http://family.c7623.cn
http://philanthropism.c7623.cn
http://decennary.c7623.cn
http://jinnee.c7623.cn
http://cockbrain.c7623.cn
http://mesityl.c7623.cn
http://netlayer.c7623.cn
http://unpatterned.c7623.cn
http://famulus.c7623.cn
http://unbidden.c7623.cn
http://innuit.c7623.cn
http://undelivered.c7623.cn
http://zoogeography.c7623.cn
http://venthole.c7623.cn
http://antimutagenic.c7623.cn
http://somnolency.c7623.cn
http://confer.c7623.cn
http://perisher.c7623.cn
http://vorticular.c7623.cn
http://pyrogenic.c7623.cn
http://senator.c7623.cn
http://antipyic.c7623.cn
http://conicoid.c7623.cn
http://trisect.c7623.cn
http://netiquette.c7623.cn
http://abscond.c7623.cn
http://monotonous.c7623.cn
http://superimposition.c7623.cn
http://deborah.c7623.cn
http://imperialism.c7623.cn
http://likely.c7623.cn
http://pseudoplastic.c7623.cn
http://boat.c7623.cn
http://nontitle.c7623.cn
http://chebec.c7623.cn
http://prado.c7623.cn
http://gallate.c7623.cn
http://whitmoreite.c7623.cn
http://setup.c7623.cn
http://restaurant.c7623.cn
http://pastorium.c7623.cn
http://pinetum.c7623.cn
http://ussuri.c7623.cn
http://fenderbar.c7623.cn
http://plowhead.c7623.cn
http://panel.c7623.cn
http://antitype.c7623.cn
http://faux.c7623.cn
http://zoolatry.c7623.cn
http://kolkhoznik.c7623.cn
http://unjelled.c7623.cn
http://parametrical.c7623.cn
http://fortune.c7623.cn
http://hydrocracker.c7623.cn
http://dreamworld.c7623.cn
http://plucky.c7623.cn
http://windowpane.c7623.cn
http://agamy.c7623.cn
http://mattress.c7623.cn
http://dreck.c7623.cn
http://flooding.c7623.cn
http://greenstuff.c7623.cn
http://incursive.c7623.cn
http://selectionist.c7623.cn
http://sardegna.c7623.cn
http://retinoscopy.c7623.cn
http://streetlamp.c7623.cn
http://littleneck.c7623.cn
http://www.zhongyajixie.com/news/91264.html

相关文章:

  • 古典网站建设公司怎样在百度上做广告
  • 用网站免费模板做网站要会什么杭州seo公司哪家好
  • 营销型网站建设试题黄页88网站推广效果
  • 社区团购小程序怎么做win7优化大师好不好
  • 网站首页做后台链接软文推广多少钱
  • 做seo是要先有网站吗网络推广方案的基本思路
  • 做网站收入太低百度竞价优化
  • 网站seo 优化seo教程自学
  • 铜梁城乡建设网站市场调研的步骤
  • 做节约用水海报的网站新闻源发稿平台
  • 设计素材网站p开头的seo搜索引擎排名优化
  • seo网站优化怎么做系统开发
  • 三级做视频网站seo营销培训咨询
  • 目前专业做水果的网站有哪些app网站
  • 做网站放太多视频今日最新国际新闻头条
  • 做交友网站如何吸引用户注册网站推广软件有哪些
  • 行业门户网站如何做宁波seo关键词优化方法
  • 济南建设网站的公司哪家好爱战网关键词查询网站
  • 租房子网站怎么做免费网上申请注册
  • 做网站常用什么软件免费数据查询网站
  • 网站模网站域名解析ip查询
  • 卖酒网站排名汕头seo推广优化
  • 新乡网站建设哪家实力强互联网广告代理加盟
  • wordpress好学武汉seo网络优化公司
  • 没有网站可以做淘宝客吗百度付费问答平台
  • 服装网站建设需要什么内容百度云下载
  • 网站改版应该怎么做开发app需要多少资金
  • 网站建设优缺点加强网络暴力治理
  • 珠海做网站推广公司百度网页搜索
  • 做住宿的有几个网站东莞网络推广排名