网站如何被谷歌收录绛县苗木网网站是由谁建设的

张小明 2026/3/2 23:04:59
网站如何被谷歌收录,绛县苗木网网站是由谁建设的,网站建设优化服务,自己怎么设计口罩文章目录Ⅰ. Collection工具类Ⅱ. 概念与意义Ⅲ. 反射相关的类与操作一、Class类#xff08;一切反射的起点#xff09;二、获取Class类的三种方式#xff08;Student类见附录#xff09;三、创建对象的两种方式① 直接调用 Class 中的 newInstance() 方法② 生成 Construc…文章目录Ⅰ. Collection工具类Ⅱ. 概念与意义Ⅲ. 反射相关的类与操作一、Class类一切反射的起点二、获取Class类的三种方式Student类见附录三、创建对象的两种方式① 直接调用 Class 中的 newInstance() 方法② 生成 Constructor 构造方法对象四、操作类的字段例子五、操作类的方法例子附录Ⅰ. Collection工具类官方文档Collections和Collection名字看起来很相似但实际上它们是两个完全不同的东西不过它们确实有一些关系主要体现在Collections是为了操作Collection接口的集合类提供了很多常用的工具方法。方法作用示例sort()对 List 排序Collections.sort(list);reverse()翻转 ListCollections.reverse(list);shuffle()打乱 ListCollections.shuffle(list);swap()交换元素Collections.swap(list, i, j);max()/min()求最大 / 最小元素Collections.max(list);frequency()某元素出现次数Collections.frequency(list, apple);copy()拷贝列表Collections.copy(dest, src);dest 必须有足够容量fill()用一个值填充整个列表Collections.fill(list, 0);binarySearch()二分查找需已排序Collections.binarySearch(list, target);replaceAll()替换指定值Collections.replaceAll(list, oldVal, newVal);rotate()旋转列表整体右移Collections.rotate(list, k);其中要倒序排序的话可以使用Collections.sort(list, Collections.reverseOrder());并且排序的类型如果是自定义类型同样要重写一下特定的比较器如下所示Collections.sort(rec,newComparatorString(){publicintcompare(Stringword1,Stringword2){returncnt.get(word1)cnt.get(word2)?word1.compareTo(word2):cnt.get(word2)-cnt.get(word1);}});Ⅱ. 概念与意义Java反射是一种机制允许程序在运行时查看类的信息如属性、方法、构造器等动态创建对象访问和修改属性调用方法操作泛型参数、注解等元信息反射的意义和应用场景如下所示应用场景描述举例框架设计核心Spring、Hibernate、MyBatis 等全靠它动态注入Bean、解析注解、AOP通用工具类/库开发不知道具体类时也能处理JSON序列化、ORM字段映射插件机制 / 动态加载类运行时加载未编译进来的类SPI机制、Class.forName()动态代理 AOP 编程实现日志增强、权限控制等JDK动态代理、AspectJ测试 Mock 框架访问私有字段模拟行为JUnit, Mockito 等简化开发 / 规避重复代码构建泛型代码库动态调用 setter/getter使用反射的风险和代价如下所示风险/代价描述⏱ 性能开销反射是解释型操作慢于直接调用 安全问题可访问私有字段/方法绕过封装 可读性差代码不直观难调试 编译器检查失效编译时不知道是否写错方法名或类型Ⅲ. 反射相关的类与操作类名用途Class类代表类的实体在运行的Java应用程序中表示类和接口Field类代表类的成员变量、属性Method类代表类的方法Constructor类代表类的构造方法Annotation类代表类的注解一、Class类一切反射的起点官方文档Java文件被编译后生成了.class文件JVM此时会去解读这个.class文件而.class文件也被JVM解析为一个对象这个对象就是java.lang.Class。通过Java的反射机制应用到这个实例就可以去获得甚至去添加改变这个类的属性和动作使得这个类成为一个动态的类。一旦拿到了Class对象比如Class?clazzPerson.class;// 具体获取方式看后面可以做很多事比如下面的操作剩下的查文档方法用途clazz.getName()获取类名clazz.getDeclaredFields()获取所有字段所有权限均可访问clazz.getDeclaredField(String name)获取指定字段所有权限均可访问下面方法也是类似clazz.getDeclaredMethods()获取所有方法所有权限均可访问clazz.getDeclaredConstructors()获取构造器所有权限均可访问clazz.newInstance()创建对象已废弃推荐 getConstructor().newInstance()clazz.getSuperclass()获取父类clazz.getInterfaces()获取实现的接口clazz.isInterface()是否是接口clazz.isAnnotationPresent(XXX.class)是否被某注解标记clazz.getLoader()获得类的加载器二、获取Class类的三种方式Student类见附录方式语法说明Class.forName(全限定名)Class.forName(com.demo.Person)常用于配置、动态加载类静态变量classPerson.class编译期就能获得类信息对象.getClass()obj.getClass()运行时获得对象的真实类型publicstaticvoidmain(String[]args){// 1. 使用Class.forName()注意要指定包名并且最好捕捉异常Class?c1null;try{c1Class.forName(Reflection.Student);}catch(ClassNotFoundExceptione){e.printStackTrace();}// 2. 使用指定类的class静态变量Class?c2Student.class;// 3. 使用对象实例的getClass()方法StudentstnewStudent();Class?c3st.getClass();// 一个类在JVM中只会有一个Class实例因此c1、c2、c3都指向同一个Class实例System.out.println(c1c2);// trueSystem.out.println(c2c3);// trueSystem.out.println(c3c1);// true}☠注意事项一个类在JVM中只会有一个Class实例。不管你创建多少对象它们的.getClass()是同一个。泛型信息在运行时会被擦除可以参考泛型笔记。Class.forName()会触发类初始化会执行静态代码块慎用三、创建对象的两种方式① 直接调用Class中的newInstance()方法第一种方式就是调用Class对象中的newInstance()方法这种方法现在已经被淘汰了原因如下所示只能调用无参构造方法如果构造方法不是public会抛异常已被标记为过时方法从JDK 9起publicstaticvoidmain(String[]args){try{// 1. 先获取Class对象ClasscClass.forName(Reflection.Student);// 2. 然后调用newInstance()方法创建对象注意要强转成Student类型Studentp(Student)c.newInstance();System.out.println(p);}catch(ClassNotFoundExceptione){thrownewRuntimeException(e);}catch(InstantiationExceptione){thrownewRuntimeException(e);}catch(IllegalAccessExceptione){thrownewRuntimeException(e);}}② 生成 Constructor 构造方法对象官方文档第二种方式先调用Class对象中的getConstructor()系列的方法得到Constructor对象然后调用该对象中的newInstance()方法优势如下所示可调用有参构造方法可修改构造器可见性setAccessible(true)publicstaticvoidmain(String[]args){try{// 1. 获取Class对象Class?csClass.forName(Reflection.Student);// 2. 获取无参的构造方法来创建对象Constructor?non_arg_constructorcs.getDeclaredConstructor();Students1(Student)non_arg_constructor.newInstance();System.out.println(s1);// 3. 获取带参的构造方法来创建对象因为带参构造方法是私有的所以要设置权限为trueConstructor?arg_constructorcs.getDeclaredConstructor(String.class,int.class);arg_constructor.setAccessible(true);Students2(Student)arg_constructor.newInstance(liren,18);System.out.println(s2);}catch(ClassNotFoundExceptione){thrownewRuntimeException(e);}catch(NoSuchMethodExceptione){thrownewRuntimeException(e);}catch(InvocationTargetExceptione){thrownewRuntimeException(e);}catch(InstantiationExceptione){thrownewRuntimeException(e);}catch(IllegalAccessExceptione){thrownewRuntimeException(e);}}// 运行结果Student()Student{namebit,age18}Student(String,name)Student{nameliren,age18}四、操作类的字段例子官方文档publicstaticvoidmain(String[]args){// 使用反射操作字段try{Class?csClass.forName(Reflection.Student);// 1. 输出类名打印字段信息System.out.println(ClassName: cs.getName());for(Fielde:cs.getDeclaredFields()){System.out.println(e.getName() e.getType().getName() Modifier.toString(e.getModifiers()));}// 2.1 获取私有属性nameFieldnamefieldcs.getDeclaredField(name);namefield.setAccessible(true);// 对于私有属性需要设置Accessible为true// 2.2 获取该类对象并设置name属性的值然后用namefield.get()获取这个私有值Studentst(Student)cs.newInstance();namefield.set(st,liren);System.out.println(反射私有属性修改了namenamefield.get(st));}catch(ClassNotFoundException|NoSuchFieldExceptione){thrownewRuntimeException(e);}catch(InstantiationExceptione){thrownewRuntimeException(e);}catch(IllegalAccessExceptione){thrownewRuntimeException(e);}}// 运行结果ClassName:Reflection.Studentnamejava.lang.StringprivateageintpublicStudent()反射私有属性修改了nameliren五、操作类的方法例子官方文档publicstaticvoidmain(String[]args){try{ClassStudentcsStudent.class;// 获取带参的私有方法然后设置权限最后使用invoke()方法进行调用Method func_methodcs.getDeclaredMethod(function,String.class);func_method.setAccessible(true);func_method.invoke((Student)cs.newInstance(),我是给私有的function函数传的参数);// 还可以输出方法的指定信息System.out.println(方法名func_method.getName());System.out.println(修饰符为Modifier.toString(func_method.getModifiers()));}catch(NoSuchMethodException e){thrownewRuntimeException(e);}catch(InvocationTargetException e){thrownewRuntimeException(e);}catch(IllegalAccessException e){thrownewRuntimeException(e);}catch(InstantiationException e){thrownewRuntimeException(e);}}// 运行结果Student()我是给私有的function函数传的参数 方法名function修饰符为private附录classStudent{// 私有属性nameprivateStringnamebit;// 公有属性agepublicintage18;// 不带参数的构造⽅法publicStudent(){System.out.println(Student());}privateStudent(Stringname,intage){this.namename;this.ageage;System.out.println(Student(String,name));}privatevoideat(){System.out.println(i am eat);}voidsleep(){System.out.println(i am pig);}privatevoidfunction(Stringstr){System.out.println(str);}OverridepublicStringtoString(){returnStudent{namename\, ageage};}}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

西安专业网站建设报价专业网站建设机构

5步掌握Mermaid.js:从文字到图表的终极转换指南 【免费下载链接】mermaid 项目地址: https://gitcode.com/gh_mirrors/mer/mermaid 还在为绘制流程图而头疼吗?每次开完会都要花大量时间在专业绘图软件上反复调整?Mermaid.js的出现彻底…

张小明 2026/1/10 13:17:55 网站建设

计算机网络技术网站开发黄的网站建设

Facebook iOS SDK实战指南:从零构建社交应用 【免费下载链接】facebook-ios-sdk facebook/facebook-ios-sdk: Facebook iOS SDK 是一套官方提供的 iOS 平台开发工具包,允许开发者将 Facebook 登录、分享、广告等功能集成到自己的 iOS 应用程序中。 项目…

张小明 2026/1/10 19:23:41 网站建设

做教育机构中介网站学做网网站论坛

HumanML3D数据集深度应用指南:从核心技术到实战场景 【免费下载链接】HumanML3D HumanML3D: A large and diverse 3d human motion-language dataset. 项目地址: https://gitcode.com/gh_mirrors/hu/HumanML3D HumanML3D作为目前最全面的3D人体运动-语言数据…

张小明 2026/1/24 7:54:32 网站建设

创世网站建设国家企业信用信息公示网官网

温馨提示:文末有资源获取方式数字化浪潮下的本地服务变革:在移动互联网深度渗透的今天,整合本地资源的线上平台已成为连接商家与用户的高效桥梁。一个功能完备的本地生活服务系统,不仅能够满足用户多元化、即时性的需求&#xff0…

张小明 2026/1/9 10:08:50 网站建设

idc 网站源码免费注册网站怎么做链接

导语:Wan2.2-T2V-A14B视频生成模型正式发布,凭借创新的混合专家(MoE)架构、电影级美学表现和高效高清生成能力,重新定义开源视频生成技术标准。 【免费下载链接】Wan2.2-T2V-A14B 项目地址: https://ai.gitcode.com…

张小明 2026/1/12 1:16:17 网站建设

嘉兴模板开发建站中国建设银行网站会员登录

还在为论文参考文献格式焦头烂额?GB/T 7714-2015 BibTeX Style项目为你提供了中文参考文献自动化排版的终极解决方案。这个免费开源工具让复杂的国标格式变得简单易用,只需几分钟配置,就能让参考文献自动符合国家标准,为你的学术写…

张小明 2026/1/12 5:12:18 网站建设