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

中国建设银行网站用户搜索引擎优化的重要性

中国建设银行网站用户,搜索引擎优化的重要性,wordpress 插件 数据库,做一直播网站要多少钱一、📘 认识反射(Reflection) 🔍 反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。 二、📥 如何获取反射 1️⃣ 反射第一步&#…


一、📘 认识反射(Reflection)

🔍 反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。 

 二、📥 如何获取反射

1️⃣ 反射第一步:获取类对象

获取类对象的三种方式如下:

 ✅ `Class c1 = 类名.class`  
 ✅ 调用 `Class` 提供的方法:`public static Class forName(String className)`  
 ✅ 调用 `Object` 提供的方法:`public Class getClass()`(例如 `Class c3 = 对象.getClass()`)

public class ReflectDemo1 {public static void main(String[] args) throws Exception {// 目标:掌握反射第一步操作:获取类的 Class 对象。// 1、类.classClass c1 = Student.class;System.out.println(c1);// 2、Class.forName("类的全类名")Class c2 = Class.forName("com.itheima.demo2reflect.Student");System.out.println(c2);// 3、对象.getClass()Student s = new Student();Class c3 = s.getClass();System.out.println(c3);System.out.println(c1 == c2); // trueSystem.out.println(c2 == c3); // true}
}
2️⃣ 获取类中的成分并对其进行操作

🔧 构造器(Constructor)
方法说明
Constructor<?>[] getConstructors()获取所有 public 构造器
Constructor<?>[] getDeclaredConstructors()获取所有构造器(包括私有)
Constructor<T> getConstructor(Class<?>... parameterTypes)获取某个 public 构造器
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)获取某个构造器(包括私有)

构造器对象的作用:初始化对象。

方法说明
T newInstance(Object... initargs)传入参数调用构造器创建对象
void setAccessible(boolean flag)设置访问权限(true 表示暴力反射)

🎯 成员变量(Field)
方法说明
Field[] getFields()获取所有 public 成员变量
Field[] getDeclaredFields()获取所有成员变量(包括私有)
Field getField(String name)获取某个 public 成员变量
Field getDeclaredField(String name)获取某个成员变量(包括私有)

变量对象的作用:赋值、取值。

方法说明
void set(Object obj, Object value)设置属性值
Object get(Object obj)获取属性值
void setAccessible(boolean flag)暴力反射

🛠️ 成员方法(Method)
方法说明
Method[] getMethods()获取所有 public 方法
Method[] getDeclaredMethods()获取所有方法(包括私有)
Method getMethod(String name, Class<?>... parameterTypes)获取某个 public 方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes)获取某个方法(包括私有)

方法对象的作用:触发调用。

方法说明
Object invoke(Object obj, Object... args)触发某个对象的方法执行
void setAccessible(boolean flag)暴力反射

🧪 示例代码汇总

📘 获取类信息
public void getClassInfo() {Class c1 = Student.class;System.out.println(c1.getName());         // 全类名System.out.println(c1.getSimpleName());   // 简类名
}

🔧 获取构造器并操作
@Test
public void getConstructorInfo() throws Exception {Class c1 = Dog.class;Constructor[] cons = c1.getDeclaredConstructors();for (Constructor con : cons) {System.out.println(con.getName() + "(" + con.getParameterCount() + ")");}Constructor con = c1.getDeclaredConstructor();Constructor con2 = c1.getDeclaredConstructor(String.class, int.class);con.setAccessible(true);Dog d1 = (Dog) con.newInstance();Dog d2 = (Dog) con2.newInstance("小黑", 3);
}

🎯 获取成员变量并操作
@Test
public void getFieldInfo() throws Exception {Class c1 = Dog.class;Field[] fields = c1.getDeclaredFields();for (Field field : fields) {System.out.println(field.getName() + "(" + field.getType().getName() + ")");}Field field = c1.getDeclaredField("hobby");field.setAccessible(true);Dog d = new Dog("泰迪", 3);field.set(d, "社交");System.out.println(d);
}

🛠️ 获取成员方法并操作
@Test
public void getMethodInfo() throws Exception {Class c1 = Dog.class;Method[] methods = c1.getDeclaredMethods();for (Method method : methods) {System.out.println(method.getName() + "(" + method.getParameterCount() + ")");}Method m1 = c1.getDeclaredMethod("eat");Method m2 = c1.getDeclaredMethod("eat", String.class);Dog d = new Dog("泰迪", 3);m1.setAccessible(true);m2.setAccessible(true);m1.invoke(d);m2.invoke(d, "牛肉");
}

三、🎯 反射的作用

反射的强大能力包括:

  • ✅ 获取类的所有组成部分;

  • 🚫 可破坏封装性(访问 private 成员);

  • 🔓 可绕过泛型检查;

  • 🛠️ 支持运行时动态处理类结构。

📦 更重要的用途:反射是多数 Java 高级框架的技术基础(如 Spring、Hibernate)。


🎩 泛型绕过示例

public class ReflectDemo3 {public static void main(String[] args) throws Exception {ArrayList<String> list = new ArrayList<>();list.add("张无忌");list.add("令狐冲");Class c1 = list.getClass();Method add = c1.getDeclaredMethod("add", Object.class);add.invoke(list, 9.9);add.invoke(list, true);System.out.println(list); // 泛型被绕过}
}

📂 保存任意对象信息到文件

public static void saveObject(Object obj) throws Exception {PrintStream ps = new PrintStream(new FileOutputStream("obj.txt", true));Class c = obj.getClass();String simpleName = c.getSimpleName();ps.println("==============" + simpleName + "====================");Field[] fields = c.getDeclaredFields();for (Field field : fields) {String fieldName = field.getName();field.setAccessible(true);Object fieldValue = field.get(obj);ps.println(fieldName + "=" + fieldValue);}ps.close();
}

📌 提示:暴力反射(setAccessible(true))会破坏封装,使用时需谨慎,JDK 9+ 开启模块化后限制更严格。

http://www.dtcms.com/wzjs/509387.html

相关文章:

  • 市场营销专业网站南京seo顾问
  • 上海电子手工活外发加工网天津优化代理
  • 做食物网站应该考虑些什么新手怎么学网络运营
  • wordpress 取消自豪2021百度新算法优化
  • 政府网站ipv6建设方案培训学校
  • 帝国cms灵动标签做网站地图附近学电脑培训班
  • 海外主机做黄色网站上海网站推广服务公司
  • 在线购物商城网站百度搜索引擎推广
  • 长春seo公司网站品牌形象推广
  • 自响应式网站建设清单百度推广有效果吗
  • 哪个网站可以做公务员题廊坊网站排名优化公司哪家好
  • 网站建设收费标准百度权重
  • 什么软件做网站链接怎么让关键词快速上首页
  • 网上做设计兼职哪个网站好点松松软文
  • 做公司网站要收费吗网页入口网站推广
  • 网站开发和运营维护百度推广怎么收费
  • 临海响应式网站设计十大新媒体平台有哪些
  • 网站虚拟主机哪个好宁波seo推广定制
  • 怎样做网站快照简述网站推广的方式
  • 如何本地搭建自己的网站科技网站建设公司
  • 做网站和软件的团队大地seo
  • 做网站需要什么工具小升初最好的补课机构排行榜
  • 网站建设通查询东莞网站到首页排名
  • 做暖暖视频网站观看百度代运营公司
  • SFDA的网站建设是什么seo网站优化课程
  • 不能上传图片到网站seo销售是做什么的
  • 杭州哪个网站建设最好杭州seo网站建设
  • 做网站要在工商备案吗seo外包费用
  • 男女做姿抽插视频网站想要推广页
  • Java电商网站开发资源网站推广优化c重庆