`

Trail: The Reflection API2

 
阅读更多

方法可能改变自己的行为方式,通过,覆盖,多态,隐藏

而反射机制则让将他跟具体的类结合在一起

 

.class文件中并不包含方法的形参名称,一方面,很多工具并不希望处理时占据太多的内存

另一方面,像密码等等参数基于安全考虑也不该存储

 

真的想存储,可以在javac中指定-parameters,这样利用反射将能够得到他们

一般情况获得的参数名称都是arg0这样,除非用了上面的方式

 

在JDK8以后,有了一个Parameter类

对于内部类,也会有个默认构造,并会自动添加一个参数,指明他的外部类是谁

这个参数叫this$0

 

public class MethodParameterExamples {
    public class InnerClass {
        final MethodParameterExamples parent;//还会添加个字段
        InnerClass(final MethodParameterExamples this$0) {
            parent = this$0; 
        }
    }
}

有个方法,

 

 

Is implicit?: true//表示这个参数是默认添加的

 

 

有一种构造方法,不是显式定义的(explicitly),也不是默认添加的(implicitly),而是synthetic的,复合的

不同的JVM实现可能添加不同的这种构造,Construct类有个判别方法

Is synthetic?: false

 

bridge方法(略)

 

反射机制可以调用某个方法,通常是这个对象无法转换为另一种类型时

Method.invoke(),第一个参数是方法被调用的那个对象,剩下的则是参数

private方法,或者private类的public方法,在invoke()之前,需要获取权限,setAccessible(true)

 

另外调用时传递new Object[0]跟不传递一样,因为这只是个空数组

不过方法本来就无参的话也是会报错

 

 

InvocationTargetException包装了调用时的所有异常,可用来捕获


Constructor.newInstance()可以有参数,从而调用各个构造方法
任何异常都会抛出,不管是不是checked

new 跟Constructor.newInstance()的区别在于:new会检查参数的类型,会自动装箱拆箱and method resolution??

 

 

反射与数组和枚举( 略)


 

分享到:
评论

相关推荐

    vsce-sourcetrail:VS Code Extension使编辑器与Sourcetrail同步-Source code editor

    VS代码的Sourcetrail扩展 此扩展使VS Code可以与进行通信 链接 项目主页,新闻: 说明文件: 下载,评论: 代码,问题: 特征 插件设置 通过上下文菜单将VS Code中的位置发送到Sourcetrail 显示插件是否连接...

    ML-model-deployment-trail:通过在heroku上部署来测试Web API

    本项目“ML-model-deployment-trail”聚焦于通过Heroku平台进行Web API的部署,以实现远程访问和测试模型。Heroku是一个流行的云平台,特别适合小型应用和快速原型的部署。 在描述中提到,此项目是用于测试在Heroku...

    technoutlarsh-trail:现在不行

    2. **学习曲线**:对于新接触JavaScript的团队,Vue.js通常因其易学性和直观的API而受到青睐。 3. **社区支持**:React和Angular拥有庞大的社区,提供丰富的资源和解决方案,但较小的框架可能更新更快,风险也相对较...

    Trail:Scala平台的路由库

    它提供了简洁、高效的 API,使得开发者能够方便地构建和管理应用的路由规则。Trail 的设计目标是零依赖,这意味着它不依赖任何外部库,这有利于减少项目的复杂性和维护成本。同时,由于支持 Scala.js 和 Scala ...

    trail:Trail 是一个协作的实时任务管理环境

    Trail 是一个协作的实时任务管理环境。 堆 Trail 的客户端使用 AngularJS 构建,使用 Firebase 作为持久性服务。 Trail 还使用 NodeJS 服务器来存储附加(外围)数据。 服务 Firebase:用于获得实时用户体验。 所有...

    proton_trail:Godot引擎的3D Trail附加组件

    ProtonTrail-Godot的3D Trail插件 概述 Godot Engine的3D Trail自​​定义节点 在运行时生成 可调分辨率 它只是一个网格,因此您可以在其上应用自己的材料 如何使用 将存储addons到您的addons文件夹 转到Project ...

    vim-sourcetrail:用于与Sourcetrail通信的Vim插件

    vim-sourcetrail Vim插件可将光标位置与同步。 安装 使用您选择的插件管理器。 git clone https://github.com/CoatiSoftware/vim-sourcetrail ~/.vim/bundle/vim-sourcetrail 将Plugin 'CoatiSoftware/vim-source...

    trail:审核跟踪日志服务

    Trail是一种模块化且灵活的审核跟踪日志服务。 特征 作为独立服务器运行或扩展现有服务 具有灵活架构的Postgres后端 REST和GraphQL接口 支持Fastify和Hapi框架 文献资料 完整文档可在或docs/文件夹中找到。 执照 ...

    sequelize-paper-trail:Sequelize插件,用于跟踪模型实例的修订历史记录

    想要的帮助:请尝试sequelize-paper-trail@3.0.0-rc.6并给 :thumbs_up: / :thumbs_down: 如果它按预期工作,请。 跟踪模型的更改,以进行审核或版本控制。 查看模型在其生命周期的任何阶段的样子,将其还原为任何...

    Paper-Trail:OSU Hackathon 2021年Spring

    "Paper-Trail: OSU Hackathon 2021年Spring"是一个编程竞赛项目,可能由俄亥俄州立大学(OSU)的学生在2021年春季黑客马拉松活动中创建。项目名称“纸足迹”暗示它可能关注的是数据跟踪、环境保护或信息记录方面的...

    matlabauc代码-Trail:踪迹

    该matlab代码包含2个演示: “ demo_tr_te_CI”:matlab代码,通过使用differnet特征选择方法和机器学习分类器来计算交叉组合的诊断性能。 “ demo_heatmap_CI”:matlab代码,用于准备AUC,测试误差,灵敏度和绘制...

    trail:这是一个用于跟踪的存储库 - 一种跟踪日志的新方法

    这是一个用于跟踪的存储库 - 一...启动 Trail 的步骤: cd kibana/样品 节点服务器.js 转到浏览器并启动: 笔记: 确保 elastic-search 在 localhost:9200 上运行 在elastic-search中保留一些数据以便能够开始查询

    trail:将Laravel命名路由导出到JavaScript的另一种尝试

    踪迹该软件包将公开一个@trail刀片指令,您可以将其包含在主刀片或布局文件中。 此刀片指令公开了一个Trail JavaScript对象,该对象包含config和应用程序具有的命名路由的集合。 如果您知道我的意思,该指令还公开了...

    yii-audittrail:AuditTrail Yii Extension的分支

    审计足迹这基本上是对在上进行的先前扩展的修改。...第2步该安装表了。 您可以使用此扩展的原始作者提供的迁移文件,也可以使用迁移文件夹中捆绑SQL文件。 只需在您的数据库服务器上运行它(使用PHPMyAd

    eulerian-trail:Hierholzer算法的实现,以在图中查找欧拉轨迹

    $ npm install --save eulerian-trail 用法 var eulerianTrail = require ( 'eulerian-trail' ) ; eulerianTrail ( { edges : [ [ 0 , 1 ] , [ 1 , 2 ] , [ 2 , 3 ] , [ 3 , 6 ] , [ 6 , 7 ] , [ 7 , 10 ] ,...

    rentx:在Rocketseat Ignite中开发的应用程序-Node.JS Trail

    Rocketseat Ignite开发的汽车租赁应用程序-NodeJS Trail :laptop: 使用: :backhand_index_pointing_right: 磨碎机 :backhand_index_pointing_right: 昂首阔步 :backhand_index_pointing_right: ORM型 :...

    paper_trail:跟踪对Rails模型的更改

    paper_trail 科 Ruby 活动记录 未发行 主 > = 2.5.0 > = 5.2,<6> = 2.4.0 > = 5.2,<6> = 2.3.0 > = 4.2,<6> = 2.3.0 > = 4.2,<5> = 2.2.0 > = 4.2,<5> = 2.1.0 > = 4.0,<5> = 1.9.3 > = 4.0,<5> = ...

    D3-trail:D3 的路径布局

    D3 步道布局 这是用于在 D3 中创建路径的布局函数,其中(与原生 d3.svg.line() 元素不同)您需要将特定的美学应用到行的每个元素。 演示 最初的用例是具有衰减不透明度的轨迹来表示运动:这是一个示例图像: (即将...

    Washington_Trail:该存储库适用于我们的Digital Humanities 1030课程

    2. CSS 文件:这些文件定义了页面的样式,如颜色、布局和字体,使得网站具有更好的视觉效果。 3. JavaScript 文件:可能用于添加交互功能,比如地图的缩放和平移,以及点击事件触发的信息弹出。 4. 图像和媒体文件:...

    paper_trail:使用Ecto跟踪并记录数据库中的所有更改。 恢复到历史记录中的任何时间

    当启用`paper_trail`后,每当你调用`Repo.insert/2`, `Repo.update/2`或`Repo.delete/2`,它都会自动创建一个新的版本记录。这些版本记录存储在`paper_trail`配置中指定的版本表中。你可以通过`PaperTrail.version_...

Global site tag (gtag.js) - Google Analytics