`
hubin4
  • 浏览: 97186 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

for java beginner11 java 反射 Method类

    博客分类:
  • JAVA
阅读更多
java 反射 Method类

str1.charAt()
str2.charAt()

这个方法charAt()其实是字节码的,不是某不实例对象的

-------------------
package com.ncs;

import java.lang.reflect.Method;

public class ReflectTest {
	
	public static void main(String[] args) throws Exception {
		//测试用反射 得到 String的charAt()方法
		String myStr = "hubin";
		
		//第一个参数是 方法名字, 但是方法可以重载 所以还得给参数
		//现在知道为什么 重载 和返回值无关,而和 参数 个数 和类型有关了吧
		Method method = String.class.getMethod("charAt", int.class);
		
		//method是String类里的一个方法,方法名字叫charAt,需要一个参数
		//然后method这个实例有一个方法invoke ,说把自己 调 一下吧,需要一个参数哦
		System.out.println(method.invoke(myStr, 1));
		
		//output u 	OK!
		
		//★如果method.invoke(null, 1)
		//那么这个方法就是静态方法
		
		//如果是1.4 ,传数组
		//new int[]{1,2,3};
		//new String[] {new String("abc"),new String("xyz"),new String("123")};
		
		//new Object[]{2} //这个数组有一个元素 给你自动包装了 变Object
		

	}
}

-----------------------[这里讲一个很有劲的事情]-----------------------

package com.ncs;

import java.lang.reflect.Method;

public class RunOtherClassMainMethod {

	public static void main(String[] args) throws Exception {
		HasMainMethod.main(new String[]{}); //这什么都不打
		HasMainMethod.main(new String[]{"hu","bin"}); 
		//这打了hu
		//bin
		/////////////
		//上面的不希奇,下面用反射
		//为什么呢??神经病么??
		/*----这里解释为什么用反射----------------
		 * 有这种情况,一个地方给你传了一个参数,是一个 类的名字
		 * 说,这个类里面有个main方法,执行它会有好东西出来,
		 * 现在只知道这个类的名字,怎么去new呢??
		 * 当然一定要new也是可以的,但是写死了
		 * 现在第二个地方也给你传了个类名,说这个里也有个main方法很好玩
		 * 那你在new第二个,有几亿个地方给你传呢?一个个new ,不现实
		 * 我们要写个通吃的方法
		 * 现在我们知道了,所有进来的类都有 个main 方法, 参数是 String[] 数组 那么好了
		 * Method method = HasMainMethod.class.getMethod("main", String[].class);
		 * 
		 * method就可以代表那一亿个方法了
		 * 但是invoke的时候会出现问题,这不是程序的问题,是 1.4 1.5 兼容的问题,非常麻烦等下细说
		 */
		
		
		/*
		Method method = HasMainMethod.class.getMethod("main", String[].class);
		//现在method里有了方法了,怎么调,静态的,不需要传实例给它了
		method.invoke(null, new String[]{"ma","xiao"});
		*/
		
		
		//上面的代码 会出现 wrong number of arguments
		// 这是兼容的问题,不是 思想 上的问题
		//★★★★★★★★★★
		//上面的代码还有问题,HasMainMethod.class还是写死了,不可以这样写,
		//要用下面的代码
		Method method = Class.forName("com.ncs.HasMainMethod").getMethod("main", String[].class);
		//这样就对了,"com.ncs.HasMainMethod"当然可以换成其他的
		//比如 args[0],让你们传进来啊
		//Class.forName(args[0]).getMethod("main", String[].class);
		
		//method.invoke(null, new String[]{"ma","xiao"}); //★这思想是对的,但是版本问题,不允许了
		
		//现在对了,然后还报 wrong number of arguments,下面详细说明
		//::
		//现在说参数的个数不对
		//我要的方法我已经说了,它需要一个参数,那个参数是一个数组
		//如果按照1.5的语法,是没有问题的
		//但是SUN必须要考虑到老版本,
		//老版本的语法,很多的时候拿到一个数组时,它会迈力的给你一个一个拆开
		//而JVM又是按照老版本的方法执行的,
		//所以这里我传的new String[]{"ma","xiao"}被它拆成两个参数了
		//所以如果我只传一个,new String[]{"ma"},还是拆,说argument type mismatch,
		//当然,需要的是数组,你给个字串当然 argument type mismatch
		
		//怎么办,你既然要拆,那我最多再给你包一层,让你去拆吧
		method.invoke(null, new Object[]{new String[]{"ma","xiao"}});
		//这样,JVM一拆,拆出的一个数组,正是我想要的效果 run OK!
		
		//还有一个方法
		method.invoke(null, (Object)new String[]{"hello","world"});
		//强制转成一个 Object 1.4不是看见数组参数就拆么?[数组的引用应该是不会拆的]
		//现在 JVM看不见数组了,不拆了,run OK!
		
	}

}

分享到:
评论

相关推荐

    ysoserial-master.zip

    ysoserial是一个用于生成利用不安全的Java对象反序列化的有效负载的概念验证工具。它包含一系列在常见Java库中发现的"gadget chains",可以在特定条件下利用执行不安全的反序列化操作的Java应用程序。ysoserial项目最初在2015年AppSecCali会议上提出,包含针对Apache Commons Collections(3.x和4.x版本)、Spring Beans/Core(4.x版本)和Groovy(2.3.x版本)的利用链

    zigbee CC2530无线自组网协议栈系统代码实现协调器与终端的TI Sensor实验和Monitor使用.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

    YOLO算法-自卸卡车-挖掘机-轮式装载机数据集-2644张图像带标签-自卸卡车-挖掘机-轮式装载机.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    Oracle10gDBA学习手册中文PDF清晰版最新版本

    **Oracle 10g DBA学习手册:安装Oracle和构建数据库** **目的:** 本章节旨在指导您完成Oracle数据库软件的安装和数据库的创建。您将通过Oracle Universal Installer (OUI)了解软件安装过程,并学习如何利用Database Configuration Assistant (DBCA)创建附加数据库。 **主题概览:** 1. 利用Oracle Universal Installer (OUI)安装软件 2. 利用Database Configuration Assistant (DBCA)创建数据库 **第2章:Oracle软件的安装与数据库构建** **Oracle Universal Installer (OUI)的运用:** Oracle Universal Installer (OUI)是一个图形用户界面(GUI)工具,它允许您查看、安装和卸载机器上的Oracle软件。通过OUI,您可以轻松地管理Oracle软件的安装和维护。 **安装步骤:** 以下是使用OUI安装Oracle软件并创建数据库的具体步骤:

    消防验收过程服务--现场记录表.doc

    消防验收过程服务--现场记录表.doc

    (4655036)数据库 管理与应用 期末考试题 数据库试题

    数据库管理\09-10年第1学期数据库期末考试试卷A(改卷参考).doc。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    YOLO算法-瓶纸盒合并数据集-3161张图像带标签-纸张-纸箱-瓶子.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    职业暴露后的处理流程.docx

    职业暴露后的处理流程.docx

    Java Web开发短消息系统

    Java Web开发短消息系统

    java毕设项目之ssm基于java和mysql的多角色学生管理系统+jsp(完整前后端+说明文档+mysql+lw).zip

    项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    批量导出多项目核心目录工具

    这是一款可以配置过滤目录及过滤的文件后缀的工具,并且支持多个项目同时输出导出,并过滤指定不需要导出的目录及文件后缀。 导出后将会保留原有的路径,并在新的文件夹中体现。

    【图像压缩】基于matlab GUI DCT图像压缩(含MAX MED MIN NONE)【含Matlab源码 9946期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    YOLO算法-挖掘机与火焰数据集-7735张图像带标签-挖掘机.zip

    YOLO算法-挖掘机与火焰数据集-7735张图像带标签-挖掘机.zip

    操作系统实验 Ucore lab5

    操作系统实验 Ucore lab5

    IMG_5950.jpg

    IMG_5950.jpg

    竞选报价评分表.docx

    竞选报价评分表.docx

    java系统,mysql、springboot等框架

    java系统,mysql、springboot等框架

    zigbee CC2530网关+4节点无线通讯实现温湿度、光敏、LED、继电器等传感节点数据的采集上传,网关通过ESP8266上传远程服务器及下发控制.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

    YOLO算法-快递衣物数据集-496张图像带标签.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    搜索引擎lucen的相关介绍 从事搜索行业程序研发、人工智能、存储等技术人员和企业

    内容概要:本文详细讲解了搜索引擎的基础原理,特别是索引机制、优化 like 前缀模糊查询的方法、建立索引的标准以及针对中文的分词处理。文章进一步深入探讨了Lucene,包括它的使用场景、特性、框架结构、Maven引入方法,尤其是Analyzer及其TokenStream的实现细节,以及自定义Analyzer的具体步骤和示例代码。 适合人群:数据库管理员、后端开发者以及希望深入了解搜索引擎底层实现的技术人员。 使用场景及目标:适用于那些需要优化数据库查询性能、实施或改进搜索引擎技术的场景。主要目标在于提高数据库的访问效率,实现高效的数据检索。 阅读建议:由于文章涉及大量的技术术语和实现细节,建议在阅读过程中对照实际开发项目,结合示例代码进行实践操作,有助于更好地理解和吸收知识点。

Global site tag (gtag.js) - Google Analytics