做网站百度营销型网站建设营销型网站建设

news/2025/10/3 2:25:12/文章来源:
做网站百度,营销型网站建设营销型网站建设,wordpress 托管是什么,企业网站主页素描模板理解反射对学习Java框架有很大的帮助#xff0c;如Spring框架的核心就是使用Java反射实现的#xff0c;而且对做一些Java底层的操作会很有帮助。一、Class类的使用1、万事万物皆对象#xff0c;(当然#xff0c;基本数据类型#xff0c;静态成员不是面向对象(属于类的))如Spring框架的核心就是使用Java反射实现的而且对做一些Java底层的操作会很有帮助。一、Class类的使用1、万事万物皆对象(当然基本数据类型静态成员不是面向对象(属于类的))所以我们创建的每一个类也都是对象即类本身是java.lang.Class类的实例对象但是这些对象都不需要new出来因为java.lang.Class类的构造方法是私有的2、任何一个类都是Class类的实例对象这个实例对象有三种表示方式(我们新建一个Student类)① Class c1 Student.class;//实际告诉我们任何一个类都有一个隐含的静态成员变量class(知道类名时用)② Class c2 stu.getClass();//已知该类的对象通过getClass方法(知道对象时用)③Class c3 Class.forName(类的全名);//会有一个ClassNotFoundException异常官网解释说c1,c2表示了Student类的类类型()class type)万事万物皆对象类也是对象是Class类的实例对象这个对象我们成为该类的类类型(有点乱但是慢慢捋一下还是能理解的)这里有一点值得注意当我们执行System.out.println(c1c2);语句结果返回的是true这是为什么呢原因是不管c1还是c2都代表了Student类的类类型一个类可能是Class类的一个实例对象。我们完全可以通过类的类类型创建该类的对象实例即通过c1或c2创建Student的实例。Student stu (Student)c1.newInstance();//前提是必须要有无参的构造方法因为该语句会去调用其无参构造方法。该语句会抛出异常。二、动态加载类1、编译时加载类是静态加载类new 创建对象是静态加载类在编译时刻就需要加载所有可用使用到的类如果有一个用不了那么整个文件都无法通过编译2、运行时加载类是动态加载类Class c  Class.forName(类的全名)不仅表示了类的类型还表示了动态加载类编译不会报错在运行时才会加载使用接口标准能更方便动态加载类的实现。功能性的类尽量使用动态加载而不用静态加载。很多软件比如QQ,360的在线升级并不需要重新编译文件只是动态的加载新的东西三、获取方法信息1、基本的数据类型void关键字都存在类类型1 Class c1 int.class;//int的类类型2 Class c2 String.class;//String类的类类型可以理解为编译生成的那个String.class字节码文件3 //当然这并不是官方的说法4 Class c3 double.class;5 Class c4 Double.class;6 Class c5 void.class;2、Class类的基本API操作1 /**2 * 打印类的信息包括类的成员函数成员变量3 *paramobj 该对象所属类的信息4 */5 publicstaticvoid printClassMessage(Object obj){6 //要获取类的信息首先要获取类的类类型7 Class c obj.getClass();//传递的是哪个子类的对象c就是该子类的类类型8 //获取类的名称9 System.out.println(累的名称是c.getName());1011 /*12 * Method类方法的对象13 * 一个成员方法就是一个Method对象14 * getMethods()方法获取的是所有的public的函数包括父类继承而来的15 * getDeclaredMethods()获取的是多有该类自己声明的方法不问访问权限16 */17 Method[] ms c.getMethods();//c.getDeclaredMethods();18 for(int i 0; i ms.length; i){19 //得到方法的返回值类型的类类型20 Class retrunType ms[i].getReturnType();21 System.out.print(retrunType.getName() );22 //得到方法的名称23 System.out.print(ms[i].getName()();24 //获取的参数类型---得到的是参数列表的类型的类类型25 Class[] paraTypes ms[i].getParameterTypes();26 for(Class class1 : paraTypes){27 System.out.print(class1.getName(),);28 }29 System.out.println());30 }31 }Class的API中还有很多其他的方法可以得到interface、Package、Annotation等很多信息具体使用请参考帮助手册本文就不在详细讲解。特别注意的一点是如果你想得到一个类的信息首先就要获取该类的类类型。四、获取成员变量构造函数信息1 /**2 * 成员变量也是对象是java.lang.reflect.Field这个类的的对象3 * Field类封装了关于成员变量的操作4 * getFields()方法获取的是所有public的成员变量的信息5 * getDeclareFields()方法获取的是该类自己声明的成员变量的信息6 */7 Field[] fs c.getDeclaredFields();8 for(Field field : fs){9 //得到成员变量的类型的类类型10 Class fieldType field.getType();11 String typeName fieldType.getName();12 //得到成员变量的名称13 String fieldName field.getName();14 System.out.print(typeName fieldName);15 }161718 /**19 * 构造函数也是对象20 * java.lang.Constructor中封装了构造函数的信息21 * getConstructor()方法获取所有的public的构造函数22 * getDeclaredConstructors得到所有的构造函数23 */24 Constructor[] cs c.getDeclaredConstructors();25 for(Constructor constructor : cs){26 System.out.print(constructor.getName()();27 //获取构造函数的参数列表---》得到的是参数雷彪的类类型28 Class[] paramTypes constructor.getParameterTypes();29 for(Class class1 : paramTypes){30 System.out.print(class1.getName(),);31 }32 System.out.println());33 }五、方法反射的基本操作1、如何获取某个方法方法的名称和方法的参数列表才能唯一决定某个方法Method m c.getDeclaredMethod(方法名可变参数列表(参数类型.class))2、方法的反射操作m.invoke(对象参数列表)方法如果没有返回值返回null如果有返回值返回Object类型然后再强制类型转换为原函数的返回值类型六、通过反射了解集合泛型的本质1 ArrayList list1 newArrayList();2 ArrayList list2 newArrayList();34 Class c1 list1.getClass();5 Class c2 list2.getClass();67 System.out.println(c1c2);//结果为true为什么结果分析因为反射的操作都是编译之后的操作也就是运行时的操作c1c2返回true说明编译之后集合的泛型是去泛型化的。那么我们就可以理解为Java集合中的泛型是用于防止错误类型元素输入的比如在list2中我们add一个intadd(10)就会编译报错那么这个泛型就可以只在编译阶段有效通过了编译阶段泛型就不存在了。可以验证我们绕过编译用反射动态的在list2中add一个int是可以成功的只是这时因为list2中存储了多个不同类型的数据(String型和int型)就不能用for-each来遍历了会抛出类型转换错误异常ClassCastException华丽的分隔线补充资料七、关于Java类加载器内容的详解1、类的加载当程序要使用某个类时如果该类还未被加载到内存中则系统会通过加载连接初始化三步来实现对这个类进行初始化·加载就是指将class文件读入内存并为之创建一个Class对象任何类被使用时系统都会建立一个Class对象·连接验证确保被加载类的正确性准备负责为类的静态成员分配内存并设置默认初始化值解析将类中的符号引用替换为直接引用·初始化局部变量保存在栈区必须手动初始化new 的对象保存在堆区虚拟机会进行默认初始化基本数据类型初始化值为0引用类型初始化值为null2、类加载的时机(只加载一次)以下时机仅表示第一次的时候① 创建类的实例的时候② 访问类的静态变量的时候③ 调用类的静态方法的时候④ 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象⑤ 初始化某个类的子类的时候⑥ 直接使用java.exe命令来运行某个主类3、类加载器负责将.class文件加载到内存中并为之生成对应的Class对象虽然我们在开发过程中不需要关心类加载机制但是了解这个机制我们就能更好的理解程序的运行4、类加载器的组成①Bootstrap ClassLoader 根类加载器也被称为引导类加载器负责Java核心类的加载比如System类在JDK中JRE的lib目录下rt.jar文件中的类②Extension ClassLoader 扩展类加载器负责JRE的扩展目录中jar包的加载在JDK中JRE的lib目录下ext目录③System ClassLoader 系统类加载器负责在JVM启动时加载来自java命令的class文件以及classpath环境变量所指定的jar包和类路径主要是我们开发者自己写的类更多内容请参考《深入理解JVM虚拟机》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

肇庆 网站建设 域联网站后台管理是什么

目录 问题 分析: 解决方法 问题 java.sql.SQLFeatureNotSupportedException 分析: 可能是你的 druid的maven依赖版本太低了,我的以前是1.1.16,就出现了异常! 解决方法 把druid的maven依赖版本调高! 运…

怎么设置网站默认首页江西人才招聘网官网

AI赋能工业生产是一个强有力的方式,在我们之前的系列博文中也有很多相应的开发实践,感兴趣的胡都可以自行移步阅读,本文的核心思想就是想要基于轻量级的实例分割模型来开发构建工业场景下的滚珠丝杠传动表面缺陷分割检测系统,首先…

保山公司做网站自由策划网站建设

在上一节的图像卷积我们了解到图像卷积可以用于去除图像中的噪声,那么对于现实生活中每一张采集到的图像都会包含噪声,也就是我们通过相机无法得到不包含噪声的图像,如果我想衡量噪声去除能力的强弱,就必须在一张不含噪声的图像中…

东莞网站优化推广rails 网站开发

导言 人工智能在医疗领域的应用正迅速发展,为医疗行业带来了新的可能性。本文将深入探讨人工智能在医疗中的智能辅助应用,以及这一趋势面临的前景和挑战。智慧医疗是指通过先进的信息技术,如人工智能、物联网、大数据等,实现医疗数…

做一个同城便民信息网站怎么做徐州木塑模板

开发过程中,需要开发一个在线编辑excel文档的功能,找到了这个合适的组件 Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 可以导入文档,预览、编辑、保存、导出等功能,可以满…

广西金兰工程建设管理有限公司网站宁波网站建设慕枫科技

文章目录 前言介绍后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:react.js 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)&am…

山西城乡和建设厅网站首页外贸网站建设公司方案

Java中数组存储数据具有局限性,我们通常用List替代数组 1.List集合类中元素有序,且可重复(有序:按添加的顺序) 2.ArrayList、 LinkedList、Vector三种实现类 ArrayList.、LinkedList.、Vector的使用: ArrayList的源码分析&#x…

杭州做网站哪家最好2018年期刊网站建设调查

目录 安装路径 启动文件 安装路径 CentOS CentOS CentOS CentOS & Ubuntu 启动报错解决方案 检查端口冲突 验证配置文件 检查文件权限 检查系统资源限制 防火墙或安全限制 检查日志 总结 安装路径 启动文件 在 CentOS 中使用 yum 安装 Nginx 时&#xff…

【Go语言小工具】Mikrotik批量替换程序

【Go语言小工具】Mikrotik批量替换程序Go语言非常适合做一些命令行小工具,编译下面这个代码生成golang-mikrotik-replace.exe文件 package mainimport ("flag""fmt""net/url""os&…

网站开发项目答辩视频国家信息公示网查营业执照年报

文章目录正文git 流程:正常:查看:回滚删除:远程:分支:底层:学习网站:廖雪峰git教程 ,笔记不断更新中~ 正文 git 流程: 正常: 项目目录下 git i…

龙华网站-建设深圳信科外面网站怎么做

一直有一个想法,感觉自己很多基础算法不是很扎实,想要找个机会写一些算法的整理,顺便自己总结一些实用的模板。 最近偶然在训练赛中连续做了2道思维矩阵快速幂的题目,碰巧有时间,就以矩阵快速幂作为这个系列博客的开始…

电子商务网站建设运营网站 加域名

事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c…

网站关键词优化费用福田蒙派克e质量怎么样

前期准备 三台服务器,服务器使用的是 centos7 mysql-5.7.24-linux-glibc2.12-x86_64 安装包 使用是版本是 mysql-5.7.24 数据库安装 将 mysql 安装包上传到三台服务器上,我使用 FlashFXP 作为上传工具 解压安装包 tar -zxvf mysql-5.7.24-linux-glibc…

做电焊加工的网站wordpress首页幻灯片尺寸

松哥周末抽空给 Spring Security 系列也录制了一套视频,目录如下:感兴趣的小伙伴戳这里-->Spring BootVue微人事视频教程今天的话题来自一个小伙伴在微信上的提问:看到这个问题,松哥忽然想到我自己之前写过 Spring BootSwagger…

网站建设与运营课程总结qq音乐的网站建设信息

Java框架可以变,基础不会变。 Java 是一门高级编程语言,由 Sun Microsystems(后来被 Oracle 收购)所开发,于 1995 年首次发布。Java 的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere),也被称为 WORA。这意味着可以在不同的操作系统和硬件平台上运行同样…

US$34 Super Auto Decoder and Pick Tool KW1 (Left)

Super Auto Decoder and Pick Tool KW1 (Left) Package includes:1pc x Super Auto Decoder and Pick Tool KW1 (Left) Pictures of Super Auto Decoder and Pick Tool KW1 (Left)Super Auto Decoder and Pick Tool KW…

贡井区建设局网站久久建工集团

Problem: 百亿富翁 文章目录 思路解题方法复杂度Code 思路 这是一个单调栈的问题。单调栈是一种特殊的栈结构,它的特点是栈中的元素保持单调性。在这个问题中,我们需要找到每个元素左边和右边第一个比它大的元素。我们可以使用一个单调递增的栈来解决这个…

做网站的岗位好吗人才招聘网最新招聘

实模式:(即实地址访问模式)它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂&#xff08…

网站的版面布局网站建设与熊掌号未来的关系

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持…

公司网站优化推广电子商务营销推广

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…