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

英文作文微博搜索引擎优化

英文作文,微博搜索引擎优化,三更app下载网站,网页打不开微信可以上什么原因文章目录 1. 调用指定方法2. 调用指定属性 1. 调用指定方法 通过反射,调用类中的方法,通过 Method 类完成。步骤:     ①通过 Class 类的 getMethod(String name,Class...parameterTypes) 方法取得一个 Method 对象,并设置此…

文章目录

  • 1. 调用指定方法
  • 2. 调用指定属性


1. 调用指定方法

通过反射,调用类中的方法,通过 Method 类完成。步骤:
    ①通过 Class 类的 getMethod(String name,Class...parameterTypes) 方法取得一个 Method 对象,并设置此方法操作时所需要的参数类型。
    ②之后使用 Object invoke(Object obj, Object[] args) 进行调用,并向方法中传递要设置的 obj 对象的参数信息。

Object invoke(Object obj, Object … args)说明:
    ①Object 对应原方法的返回值,若原方法无返回值,此时返回 null
    ②若原方法若为静态方法,此时形参 Object obj 可为 null
    ③若原方法形参列表为空,则 Object[] args 为 null
    ④若原方法声明为 private, 则需要在调用此 invoke() 方法前,显式调用方法对象的setAccessible(true) 方法,将可访问 private 的方法。

举例:

父类Person

package day14;public class Person {public String name;int age;	
}

接口Move

package day14;public interface Move {void moveType();
}

接口Study

package day14;public interface Study {void studyInfo();
}

子类Student

package day14;public class Student extends Person implements Move,Study{public Student() {System.out.println("调用的是public Student()");}public Student(String school) {this.school = school;System.out.println("调用的是public Student(String school)");}private Student(String school, int age) {this.school = school;this.age = age;System.out.println("调用的是private Student(String school, int age)");}public String school;private String privateField;public void showInfo() {System.out.println("学校是:" + this.school);}@Overridepublic void studyInfo() {System.out.println("学习的是中学知识");}@Overridepublic void moveType() {System.out.println("骑自行车去上学");}private void test(String name) {System.out.println("这是私有方法private void test(String name)");}public String getSchool() {return this.school;}public void setInfo(String name, String school) {this.name = name;this.school = school;System.out.println("这个是public void setInfo(String name, String school)方法");}public void setInfo(int age) {System.out.println("这个是public void setInfo(int age)方法");}}

Test.java
(1)获取类的公有属性:

package day14;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class Test1 {public static void main(String[] args) {try {Class clazz = Class.forName("day14.Student");//通过 包名.类名 的字符串,调用Class.forName方法获取指定类的Class实例/*** 注意:下面不论是反射调用setInfo还是test方法,* 都调用的obj对象的方法,obj对象实际上就是student对象。*/Constructor con = clazz.getConstructor();//获取无参构造Object obj = con.newInstance();//使用无参构造创建对象Method m = clazz.getMethod("setInfo", String.class,String.class);//得到名称叫setInfo,参数是String,String的方法m.invoke(obj, "zhangsan","第一中学");//参数1是需要实例化的对象,参数2是调用当前方法的实际参数//-----------------------------------//如果想要调用一个私有方法Method ml = clazz.getDeclaredMethod("test", String.class);//获取方法名为test,参数为1个String类型的方法ml.setAccessible(true);//解除私有的封装,下面可以强制调用私有的方法ml.invoke(obj, "lisi");//调用一个重载方法Method m2 = clazz.getMethod("setInfo", int.class);//setInfo重载方法m2.invoke(obj, 1);//有返回值的方法Method m3 = clazz.getDeclaredMethod("getSchool");//这是获取方法名为getSchool并且没有参数的方法String school = (String)m3.invoke(obj);//调用有返回值的但是没有参数的方法System.out.println(school);} catch (Exception e) {e.printStackTrace();}}
}

运行结果:

在这里插入图片描述

2. 调用指定属性

    在反射机制中,可以直接通过 Field 类操作类中的属性,通过 Field 类提供的 set()get() 方法就可以完成设置和取得属性内容的操作。

public Field getField(String name):返回此 Class 对象表示的类或接口的指定的公有的 Field 。

public Field getDeclaredField(String name): 返回此 Class 对象表示的类或接口的指定的(包括私有的) Field 。

在 Field 中:
    public Object get(Object obj):取得指定对象 obj 上此 Field 的属性内容
    public void set(Object obj,Object value):设置指定对象 obj 上此 Field 的属性内容

注:
    在类中属性都设置为 private 的前提下,在使用 set() 和 get() 方法时,首先要使用 Field 类中的setAccessible(true) 方法将需要操作的属性设置为可以被外部访问。
    public void setAccessible(true) 访问私有属性时,让这个属性可见。

举例:

Test.java

package day14;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class Test1 {public static void main(String[] args) {try {Class clazz = Class.forName("day14.Student");//通过 包名.类名 的字符串,调用Class.forName方法获取指定类的Class实例//反射创建一个对象Constructor con = clazz.getConstructor();Student stu = (Student)con.newInstance();Field f = clazz.getField("school");//获取名称为school的属性f.set(stu, "第三中学");//对stu对象的school属性设置值“第三中学”String school = (String)f.get(stu);//获取stu对象的school属性的值System.out.println(school);System.out.println("------------------------------------");//如果是私有的属性Field f1 = clazz.getDeclaredField("privateField");f1.setAccessible(true);f1.set(stu, "测试私有属性");System.out.println(f1.get(stu));} catch (Exception e) {e.printStackTrace();}}
}

运行结果:

在这里插入图片描述

http://www.hkea.cn/news/458888/

相关文章:

  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件
  • 做立体字的网站重庆seo公司排名
  • 电子商务网站的建设包含哪些流程搜索引擎关键词怎么优化
  • 将自己做的网站发布到谷歌推广新手教程
  • 深圳保障性住房管理办法seo排名优化方法
  • 2022注册公司取名推荐网络营销的优化和推广方式
  • 做网站费是多少贵州二级站seo整站优化排名
  • 做网站潍坊培训课程安排
  • python做网站需要什么seo学习论坛
  • 用手机怎样制作网站网络seo是什么
  • 企业网站开发信息搜索大全浏览器
  • 做虚拟货币交易网站域名注册平台有哪些
  • 企业网站首页的实现专业的网页制作公司
  • 动态网站建设教程宝鸡seo排名
  • 做外贸b2b免费网站优化推广网站排名
  • 丹徒网站建设价格香港服务器
  • 宿迁哪里有做网站开发的信息流广告案例
  • 电脑网页无法访问如何解决北京seo地址
  • 直销网站系统制作价格java培训机构
  • dw软件个人简历网站怎么做百度导航下载2022最新版官网
  • 成都官方网站建设泉州seo外包
  • 矿山建设网站天津网络推广seo
  • 国内优秀的响应式网站深圳专业seo外包
  • 重庆装修价格c盘优化大师
  • 银行网站 设计方案外包优化网站
  • 做网站是学什么专业软件外包企业排名
  • wordpress商城 中文站百度站长平台网址
  • 建手机网站的软件有哪些南宁百度seo价格
  • 做网站私活长沙网络营销公司