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

河南省人事任免seo快速排名案例

河南省人事任免,seo快速排名案例,网站后台管理产品排序,网站页面改版降权文章目录 1. 使用反射实例化对象1.1 利用无参构造函数创建对象1.2利用带参构造函数创建对象 2.通过反射调用对象方法2.1 调用公共方法2.2 调用私有方法(需设置访问权限)3. 访问和修改对象的属性3.1 公共属性3.2 私有属性 4. 实践任务4.1工厂类 SimpleFac…

文章目录

  • 1. 使用反射实例化对象
    • 1.1 利用无参构造函数创建对象
    • 1.2利用带参构造函数创建对象
  • 2.通过反射调用对象方法
    • 2.1 调用公共方法
    • 2.2 调用私有方法(需设置访问权限)
    • 3. 访问和修改对象的属性
    • 3.1 公共属性
    • 3.2 私有属性
  • 4. 实践任务
    • 4.1工厂类 SimpleFactory
    • 4.2 测试工厂类 TestFactory
  • 5. 总结与思考

1. 使用反射实例化对象

1.1 利用无参构造函数创建对象

代码示例:

package com.example;import java.lang.reflect.Method;public class ReflectionTest {public static void main(String[] args) {try {// 1. 获取 Person 类的 Class 对象Class<?> clazz = Class.forName("com.example.Person");// 2. 获取无参构造函数并创建实例Object person1 = clazz.getConstructor().newInstance();// 验证:获取公共方法 sayHello 并调用Method sayHelloMethod = clazz.getMethod("sayHello");sayHelloMethod.invoke(person1);} catch (Exception e) {e.printStackTrace();}}
}

1.2利用带参构造函数创建对象

package com.example;import java.lang.reflect.Method;public class ReflectionTest {public static void main(String[] args) {try {Class<?> clazz = Class.forName("com.example.Person");// 1. 获取带参构造函数(参数类型要匹配)Constructor<?> constructor = clazz.getConstructor(String.class, int.class);// 2. 创建实例Object person2 = constructor.newInstance("张三", 25);// 验证Method sayHelloMethod = clazz.getMethod("sayHello");sayHelloMethod.invoke(person2);} catch (Exception e) {e.printStackTrace();}}
}

2.通过反射调用对象方法

2.1 调用公共方法

try {Class<?> clazz = Class.forName("com.example.Person");Object person = clazz.getConstructor(String.class, int.class).newInstance("李四", 30);// 1. 获取公共方法 sayHelloMethod sayHelloMethod = clazz.getMethod("sayHello");// 2. 调用方法sayHelloMethod.invoke(person);
} catch (Exception e) {e.printStackTrace();
}

2.2 调用私有方法(需设置访问权限)

假设 Person 类中有一个私有方法 secretMethod:

private void secretMethod() {System.out.println("这是一个私有方法。");
}

可以通过以下方式调用:

try {Class<?> clazz = Class.forName("com.example.Person");Object person = clazz.getConstructor().newInstance();// 1. 获取私有方法Method secretMethod = clazz.getDeclaredMethod("secretMethod");// 2. 设置可访问secretMethod.setAccessible(true);// 3. 调用secretMethod.invoke(person);
} catch (Exception e) {e.printStackTrace();
}

3. 访问和修改对象的属性

3.1 公共属性

若 Person 中有公共属性 public String address;,可直接使用 getField 和 set/get 来操作。

3.2 私有属性

假设要访问或修改私有属性 name:

try {Class<?> clazz = Class.forName("com.example.Person");Object person = clazz.getConstructor().newInstance();// 获取私有字段 nameField nameField = clazz.getDeclaredField("name");// 允许访问私有字段nameField.setAccessible(true);// 修改 person 的 name 值nameField.set(person, "王五");// 调用 sayHello() 验证Method sayHelloMethod = clazz.getMethod("sayHello");sayHelloMethod.invoke(person);
} catch (Exception e) {e.printStackTrace();
}

4. 实践任务

实现一个简单的工厂模式
利用反射根据传入的类名生成对象,并调用其方法。

4.1工厂类 SimpleFactory

public class SimpleFactory {/*** 根据传入的类名动态创建对象** @param className 类的全限定名* @return 创建的对象实例,若出错则返回 null*/public static Object createInstance(String className) {try {// 1. 加载类Class<?> clazz = Class.forName(className);// 2. 使用无参构造函数实例化return clazz.getConstructor().newInstance();} catch (Exception e) {e.printStackTrace();return null;}}
}

4.2 测试工厂类 TestFactory

public class TestFactory {public static void main(String[] args) {// 1. 使用简单工厂创建对象Object obj = SimpleFactory.createInstance("com.example.Person");if (obj != null) {try {// 2. 获取并调用 sayHello 方法Method sayHelloMethod = obj.getClass().getMethod("sayHello");sayHelloMethod.invoke(obj);} catch (Exception e) {e.printStackTrace();}}}
}

运行结果

Hello,我是 默认姓名,年龄 0

5. 总结与思考

1.反射的作用:

  • 让代码具备了动态性,能在运行时操作类、方法和属性。
  • 适合做框架开发和插件机制等对扩展性要求高的场景。

2.常见应用场景:

  • 依赖注入:如 Spring 中的 @Autowired。
  • 动态代理:如 AOP(面向切面编程)。
  • 通用工具类:如 Bean 拷贝、ORM 映射(MyBatis、Hibernate 等)。

3.注意事项:

  • 反射往往会带来一定的性能开销,频繁调用需谨慎。
  • 对私有成员的访问需设置 setAccessible(true),可能存在安全风险。
  • 异常处理要充分,包括 ClassNotFoundException、NoSuchMethodException、IllegalAccessException 等。
http://www.dtcms.com/wzjs/278596.html

相关文章:

  • 专门做外包的网站企业网站推广效果指标分析
  • 建设政府网站多少钱网络营销个人感悟小结
  • 廊坊做网站外包网络营销方案设计范文
  • 百姓网免费招聘信息seo品牌优化百度资源网站推广关键词排名
  • 做网站一个月20万泰安网站建设优化
  • 驻马店行业网站建设源码百度一下 你知道首页
  • 学校集约网站建设销售平台有哪些
  • 大连筑成建设集团有限公司网站微信营销方法
  • wordpress全屏广告插件seo的中文是什么
  • 北京市城乡建设委官方网站多合一seo插件破解版
  • 建手机网站报价互联网营销成功案例
  • vps打开网站很慢武汉百度推广外包
  • 网站建设实训不足短视频营销推广方式
  • 公司网站建立的建议如何设计企业网站
  • 郑州app开发 丁seo优化教程自学网
  • 可以找酒店案例的网站windows优化大师可靠吗
  • 引迈快速开发平台广州王牌seo
  • 怎样做自己的销售网站长春网站制作计划
  • 怎么在网上卖东西到国外山东seo推广
  • 网站建设如何工作怎么查询百度收录情况
  • 网站制作二维码河北seo基础
  • 二手网站建设目标网页代码模板
  • 网站做排名2015广州seo全网营销
  • b2b外贸网站建站近期新闻热点大事件
  • 玉林建设工程信息网站新的营销方式有哪些
  • 用vs做html网站廊坊seo管理
  • 如何做导航网站十大嵌入式培训机构
  • led外贸网站制作成功的网络营销案例有哪些
  • cdr做网站分辨率5118营销大数据
  • 网站天天做收录有效果吗seo网站优化方法