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

如何做漂亮的网站首页建网站软件工具

如何做漂亮的网站首页,建网站软件工具,网站做收录要多少长时间,wordpress登录微信插件下载失败1. 反射机制是什么? 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能被成…

1. 反射机制是什么?

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

2.反射机制能做什么?

反射机制提供了以下功能:

  • 在运行时判断一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断一个类所具有的成员变量和方法
  • 在运行时调用一个对象的方法
  • 生成动态代理

3.反射机制的优缺点

  静态编译:在编译时确定类型,绑定对象,即可通过

  动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,以降低类之间的耦合性。

  反射机制的优点就是:可以实现动态创建对象和编译,体现出很大的灵活性。比如,一个大型的软件,不可能一次性把它设计的很完美。一个程序编译通过发布了,当发现需要更新某些功能时,我们不可能把以前的卸载,否则软件就没人用了。采用静态编译的话,需要把整个程序重新编译才可以实现功能的更新,而采用反射机制的话,就可以不用卸载,只需要运行时动态的创建和编译,就可以实现功能。缺点是对性能有影响,反射是一种解释操作,我们告诉jvm, 我们希望做什么,这总是慢于执行相同的操作。

4.反射机制的相关API

  • 通过一个对象获得完整的包名和类名
public class TestReflect {public static void main(String[] args) {TestReflect testReflect = new TestReflect();System.out.println(testReflect.getClass().getName());}
}
  • 实例化Class类对象
public class TestReflect1 {public static void main(String[] args) throws ClassNotFoundException {Class<?> class1 = null;Class<?> class2 = null;Class<?> class3 = null;class1 = Class.forName("com.atguigu.java1.TestReflect1");class2 = new TestReflect1().getClass();class3 = TestReflect1.class;System.out.println(class1.getName());System.out.println(class2.getName());System.out.println(class3.getName());}
}
  • 获取一个对象的父类与实现的接口
public class TestReflect3 implements Serializable{private static final long serialVersionUID = 1L;public static void main(String[] args) throws ClassNotFoundException {Class<?> clazz = Class.forName("com.atguigu.java1.TestReflect3");//获取父类Class<?> parentClazz = clazz.getSuperclass();System.out.println(parentClazz.getName());//获取所有接口Class<?> intes[] = clazz.getInterfaces();for(int i = 0; i < intes.length ;i++){System.out.println(intes[i].getName());}}
}
  • 获取类的全部构造函数,通过反射机制实例化一个类的对象
public class TestReflect4 {public static void main(String[] args) throws Exception {//实例化Class对象Class<?> clazz = User.class;//通过反射机制实例化一个类的对象   默认构造方法,调用set赋值User user = null;user = (User) clazz.newInstance();user.setAge(20);user.setName("Rick");System.out.println(user);//获取全部的构造函数   使用构造函数赋值Constructor<?> cons[] = clazz.getConstructors();//查看每个构造方法需要的参数for(int i = 0; i < cons.length; i++){Class<?> clazzs[] = cons[i].getParameterTypes();System.out.print("cons[" + i + "]" );for(int j = 0; j<clazzs.length;j++){System.out.print(clazzs[j].getName() +" ");}System.out.println();}user = (User) cons[0].newInstance("RICK");System.out.println(user);user = (User) cons[1].newInstance("RICK",20);System.out.println(user);}
}class User{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public User(){}public User(String name){this.name = name;}public User(String name, int age){this.name = name;this.age = age;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + "]";}}
  • 获取某个类的全部属性
public class TestReflect6 implements Serializable{/*** */private static final long serialVersionUID = 1L;public static void main(String[] args) throws ClassNotFoundException {Class clazz = Class.forName("com.atguigu.java1.TestReflect6");Method method[] = clazz.getMethods();for(int i = 0; i < method.length; i++){Class<?> returnType = method[i].getReturnType();Class<?> para[] = method[i].getParameterTypes();int temp = method[i].getModifiers();System.out.print(Modifier.toString(temp) + " ");System.out.print(returnType.getName() + " ");System.out.println(method[i].getName() + "");for(int j = 0; j < para.length -1; j++){System.out.println(para[i].getName());    }Class<?> exce[] = method[i].getExceptionTypes();if(exce.length > 0){System.out.println("异常");for(int k = 0; k <exce.length -1; k++){System.out.print(exce[k].getName() +" ");}}System.out.println();    }}
}
  • 通过反射机制调用某个类的方法
public class TestReflect7 {public static void main(String[] args) throws Exception {Class<?> clazz = Class.forName("com.atguigu.java1.TestReflect7");Method method = clazz.getMethod("reflect1");method.invoke(clazz.newInstance());Method method2 = clazz.getMethod("reflect2", int.class,String.class);method2.invoke(clazz.newInstance(), 20,"Rick");}public void reflect1(){System.out.println("Java 反射机制 调用方法1");}public void reflect2(int age, String name){System.out.println("Java 反射机制 调用方法2");System.out.println(age + " " + name);}
}
  • 通过反射机制操作某个类的属性

public class TestReflect8 {private String property = null;public static void main(String[] args) throws Exception {Class<?> clazz = TestReflect8.class;Object obj = clazz.newInstance();Field field = clazz.getDeclaredField("property");        field.setAccessible(true);field.set(obj, "java反射机制");System.out.println(field.get(obj));}
}
  • 反射机制的动态代理
//定义项目接口
interface Subject{public String say(String name, int age);
}//定义真实项目
class RealSubject implements Subject{@Overridepublic String say(String name, int age) {return name + " " + age;}
}class MyInvocationHandler implements InvocationHandler{private Object obj;    //真实类的对象public Object bind(Object obj){this.obj = obj;return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {Object temp = method.invoke(this.obj, args);return temp;}
}public class TestReflect9 {public static void main(String[] args) {MyInvocationHandler demo = new MyInvocationHandler();Subject sub = (Subject) demo.bind(new RealSubject());String info = sub.say("Rich", 20);System.out.println(info);}
}

 

转载于:https://www.cnblogs.com/lfdingye/p/6123274.html

http://www.lbrq.cn/news/2634463.html

相关文章:

  • crm管理是什么意思厦门关键词排名seo
  • 网站脚本怎么做站长查询域名
  • qq赞网站推广免费百度软件商店
  • 专业商城网站建设报价免费外网加速器
  • 常州城乡建设学校网站优化营商环境条例心得体会
  • 钦州建设网站免费加客源
  • ps软件免费seo教育
  • 深圳加盟网站建设seo工作职责
  • 自己建的网站可以用笔记本做服务器吗站长工具站长之家官网
  • 做网站用虚拟机还是服务器seo赚钱培训课程
  • 我的网站为什么广州百度网站推广
  • wordpress请求汤阴县seo快速排名有哪家好
  • 郑州专业的网站建设公司哪家好什么是seo什么是sem
  • mooc网站开发流程图全国疫情一览表
  • 在婚恋网站做翻译好吗重庆关键词seo排名
  • 网站首页跳出弹窗google入口
  • 淘宝客网站开发服务商怎么提交百度收录
  • 电子商务80gb的流量网站够用吗百度地图网页版
  • 天权网站建设优化设计七年级上册语文答案
  • 重庆政府网站建设磁力猫torrent kitty
  • 自己做代购网站公司建设网站哪家好
  • 福田网站建设设计百度热搜榜排行
  • 金融网站建设内容小程序推广引流
  • 哪个网站做图文素材多唐山百度提升优化
  • 外贸网站建设网网站一般需要怎么推广
  • 推广展示类网站营销渠道有哪些
  • 游戏网站开发需求分析网络营销的定义
  • 深圳电商网站建设线上销售水果营销方案
  • wordpress 获取根目录南京seo网络推广
  • 泰安网站建设如何百度站长平台登录
  • 微软Azure AI Foundry正式上线GPT-5系列模型
  • 【VLLM篇】:原理-实现
  • DBeaver 25.1.0 转储数据库失败解决方案(适配最新版界面)
  • MySql MVCC的原理总结
  • 【图像处理基石】浅谈3D城市生成中的数据融合技术
  • 从零开始用 Eclipse 写第一个 Java 程序:HelloWorld 全流程 + 避坑指南