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

网站建设多少钱哪个济南兴田德润有活动吗/世界杯32强排名

网站建设多少钱哪个济南兴田德润有活动吗,世界杯32强排名,做html网站模板下载,公司画册设计网站2019独角兽企业重金招聘Python工程师标准>>> 在学习Java反射知识之前,先看一个基本例子,这个例子展示了,Java对象最普通的构造和使用方式,也是Java基础学习最初期需要掌握的部分。 public class TestReflection{public…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在学习Java反射知识之前,先看一个基本例子,这个例子展示了,Java对象最普通的构造和使用方式,也是Java基础学习最初期需要掌握的部分。

public class TestReflection{public static void main(String[] args) {Person per = new Person("zhangsan", 20);System.out.println(per);}
}
class Person{private String name;private int age;public Person(){}public Person(String name, int age){this.name = name;this.age = age;}public String getName() {return this.name;}public int getAge() {return this.age;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public String toString(){return "Per(name = " + this.getName() + ", age = " + this.getAge() + ")";}
}

该程序成功打印出person的信息如下:

Per(name = zhangsan, age = 20)

这种方式相信任何一个学习过Java的都很容易看懂,也容易理解的正常方式,即先有类,然后实例化出对象;如果由一个对象得到关于该类的所有信息,这就是反射所在。修改main函数如下:

public class TestReflection{public static void main(String[] args) {Person per = new Person();System.out.println(per.getClass().getName());}}

程序将打印出Person,说明成功地由对象信息反射得到类信息。实际上per.getClass()得到的是Class实例,可以这么说,Java中的所有对象都是Class类的实例,得到某个对象的Class类实例对象,便可以反射出该对象所属类的所有信息,例如所有的构造方法,方法,属性,修饰符,接口,异常等信息,这些都有反射专属类的支持,Constructor类,Method类,Field类,Modifer类,,Interface类,这些类都为与java.lang.reflect包里,因此使用的时候,别忘了导入包。而通常获取一个对象Class实例的方式有三种:per.getClass()是第一种,Person.class是第二种;Class.forName("Person")//实际中需要指定包名,这三种方式以第三种使用最多。重新修改main方法:

public class TestReflection{public static void main(String[] args) throws Exception {Class c;c = Class.forName("Person");System.out.println(c.getName());}}

程序同样能打印出Person信息,现在尝试用c实例化Person对象:

public class TestReflection{public static void main(String[] args) throws Exception {Class c = null;c = Class.forName("Person");Person per = (Person)c.newInstance();System.out.println(per);}}

程序成功输出:

Per(name = null, age = 0),

如果将Person类的无参构造函数去掉的话,这时就会出现异常:

Exception in thread "main" java.lang.InstantiationException: Person
 at java.lang.Class.newInstance(Unknown Source)
 at TestReflection.main(TestReflection.java:5)

显然程序是通过反射调用无参构造函数来实现Person类对象的实例化,所以一般我们都需要手动为一个类加上无参构造函数。现在利用Class实例对象输出Person类的所有构造函数:

import java.lang.reflect.*;
public class TestReflection{public static void main(String[] args) throws Exception {Class c = null;c = Class.forName("Person");//Person per = (Person)c.newInstance();Constructor cons[] = c.getConstructors();for(int i=0;i<cons.length;i++){System.out.println(cons[i]);}}
}

输出如下:

public Person()
public Person(java.lang.String,int)

发现以上输出方法参数中没有修饰符,使用Modifier类调整输出如下:

public class TestReflection{public static void main(String[] args) throws Exception {Class c = null;c = Class.forName("Person");//Person per = (Person)c.newInstance();Constructor cons[] = c.getConstructors();for(int i=0;i<cons.length;i++){Class params[] = cons[i].getParameterTypes();int mod = cons[i].getModifiers();System.out.print(Modifier.toString(mod) + " " + cons[i].getName() + "(");for(int j=0;j<params.length;j++){System.out.print(params[j].getName() + " " + "arg-" + j);if(j < params.length-1){System.out.print(", ");}}System.out.print(")");System.out.println();}}
}

经过调整之后,输出如下的合理信息:

public Person()
public Person(java.lang.String arg-0, int arg-1)

现在换一种实例化Person对象的方式,采用Class实例对象得到的构造函数来实例化Person对象,如下:

Person per1 = (Person)cons[0].newInstance();Person per2 = (Person)cons[1].newInstance("zhangsan", 20);System.out.println(per1);System.out.println(per2);

输出如下:

Per(name = null, age = 0)
Per(name = zhangsan, age = 20)

说明此种方式可以有效地针对构造函数的不同实例化对象,下面再介绍由Class实例对象反射得到Person类的其他方法以及调用的方式。获得Method实例,使用invoke方法实现调用。

Method m = c.getDeclaredMethod("say",String.class);m.invoke(per2,"hello !!!");

成功输出如下:

Per(name = zhangsan, age = 20) say hello !!!

好了,其他的诸如接口,属性,这里就不再赘述了,总之,反射,就是利用Class类实例,获取其他类的结构信息。

转载于:https://my.oschina.net/u/1258323/blog/472123

http://www.jmfq.cn/news/4790971.html

相关文章:

  • 国际要闻军事新闻/搜索优化的培训免费咨询
  • 网站建设honmau/app开发网站
  • 门头沟营销型网站建设/郑州网络seo公司
  • 市政府网站开发实例/世界搜索引擎公司排名
  • 做外贸soho 需要有网站吗/网络营销的专业知识
  • 分类网站上怎么做锚文本/百度搜索引擎官网
  • 做的好的微信商城网站/电商关键词排名优化怎么做?
  • 深圳市珠宝网站建设/搭建网站步骤
  • 网站设计草图/俄罗斯搜索引擎yandex推广入口
  • 宿迁建站网/seo云优化公司
  • 民权做网站哪家好/做网站的软件有哪些
  • 用什么软件搭建网站源码/百度指数官网查询
  • 陕西建设厅执业注册中心网站/营销策划是做什么
  • 做电商设计在哪个网站接单/厦门关键词排名提升
  • 用自己的计算机做服务器建网站/百度免费优化
  • 交友网站的设计与实现/槐荫区网络营销seo
  • 北京企业网站设计公司/北京seo主管
  • 买外贸服装去哪个网站/广州网站优化平台
  • 中国城乡建设结合部网站/培训心得体会总结简短
  • 邢台网站招聘员工123/百度指数网址
  • 团购做的好的网站有哪些/哪个app可以找培训班
  • 建设银行网银网站无法访问/免费推客推广平台
  • html网站设计实验报告/seo裤子的关键词首页排名有哪些
  • 郑州建设网站有哪些/推广技术
  • 一家做运动鞋的网站/模板建站平台
  • 动漫网站建设毕业设计/网络推广员好做吗
  • 政府网站集约化建设培训讲话/济宁百度推广公司有几家
  • 活动手机网站开发/站长查询域名
  • 国外网页网站/公司培训
  • 海宁市网站建设/网络营销和直播电商专业学什么