FinOps有望降低企业50%+的云成本! 了解详情
写点什么

Oracle 弃用 sun.reflect.Reflection.getCallerClass

  • 2013-07-23
  • 本文字数:802 字

    阅读完需:约 3 分钟

作为 Java 开发者,我们经常忽略 @Deprecated 注释,继续使用这些功能,即使我们很清楚 Oracle 会在某个时间拿到这一标签,但仍然幻想着这些标签像刻在石头上那样不可磨灭。

jdk 7u40 开始,Oracle 已经弃用了 sun.reflect.package 包里不易理解的 Reflection.getCallerClass(int)方法。在 Java 7 中,通过设置 Java 命令行选项 Djdk.reflect.allowGetCallerClass,可以继续使用该方法。但在 Java 8 及以后的版本中,该方法将被彻底删除,调用它会导致 UnsupportedOperationException 异常。

根据 Java 文档,Reflection 类位于调用栈中的 0 帧位置,该方法返回调用栈中从 0 帧开始的第 x 帧中的类。总之,getCallerClass 方法提供的机制可用于确定调用者,从而实现“感知调用者(Caller Sensitive)”的行为,即根据调用类或调用栈中的其它类来调整其自身的行为。

JDK 团队希望知道 getCallerClass 方法在应用程序中是如何使用的,能否修改这些代码使之不再依赖任何 sun.* API。你可以加入 OpenJDK core-dev-libs 邮件列表来反馈意见。

多年来,Oracle 一直在提醒开发者,调用 sun.* 包里面的方法是危险的。关于这点,读者可以阅读 Oracle 博客上的说明文章“为什么开发人员不应该调用‘sun’包”。总之,使用这些已弃用的特性很容易出问题。随着平台的变化,它们可能随时被转移、删除或者更改语义。

然而,如果你使用了感知调用者的行为,也无需失去信心。JDK 增强提案( JEP176 )呼吁提高 JDK 方法处理的实现的安全性,使用可以可靠地识别的感知调用者方法的机制代替现有的人工维护的方法列表。

继续关注该问题,可以访问 Oracle Bug 数据库

参考英文原文: Oracle Discontinuing sun.reflect.Reflection.getCallerClass


感谢马国耀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ ;)或者腾讯微博( @InfoQ ;)关注我们,并与我们的编辑和其他读者朋友交流。

2013-07-23 02:458020
用户头像

发布了 256 篇内容, 共 77.7 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

从无到有,政务系统的全面可观测模板

博睿数据

智能运维 博睿数据 政务系统 全面检测

Mybatis省略@Param注解原理

mybatis 6月月更 @Param注解

腾讯云小微技术登顶权威榜单XTREME基准,跨语言技术迁移开发助力企业出海

科技热闻

改变世界的开发者丨黑客松冠军,为听障儿童推开一扇“有声的窗”

华为云开发者联盟

云计算 华为云 GaussDB 听觉 听障儿童

问题来了:4GB物理内存的机器上申请8G内存能成功吗?

Java全栈架构师

Java Linux 程序员 面试 程序人生

应用实践 | Apache Doris 在网易互娱的应用实践

SelectDB

MySQL 数据库 最佳实践 apache doris 数据优化

2022中国信通院安全运营发展论坛成功召开

中国IDC圈

安全

LeaRun.Java表单快速开发工具

力软低代码开发平台

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令

CRMEB

想要了解数字机器人如何赋能政企领域,一定不要错过这个论坛

王吉伟频道

RPA 机器人流程自动化 机器人开发 华为开发者大会2022 华为WeAutomate

Python小白何时能做自动化

伤心的辣条

Python 软件测试 自动化测试 接口测试 测试开发

CloudTTY:下一代云原生开源 Cloud Shell

Daocloud 道客

Kubernetes 云原生 开源项目 网页命令行

国际权威报告:SaaS+AI大势所趋,腾讯云领跑国内科技公司

科技热闻

本周三晚19:00Hello HarmonyOS应用篇第7课—分布式应用开发

HarmonyOS开发者

HarmonyOS

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南【附网盘资源】

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

本周二晚19:00战码先锋第5期直播丨深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅

OpenHarmony开发者

OpenHarmony

melody SGS旋律麦克风链游开发模式分析

开发微hkkf5566

国家先进计算产业创新(宜昌)中心正式落地 由中科曙光、升哲科技联合运营

SENSORO

人工智能 物联网 新基建 智慧城市

35人首次上榜、行者皆勇者——创业邦3040新青年创投峰会圆满落幕

创业邦

Vue-8-计算属性和侦听属性

Python研究所

6月月更

游泳馆应用软件开发:在线一站式服务,优化用户整体体验

开源直播系统源码

软件开发 APP开发 直播系统

蓝凌叮当刘向华:如何用一款SaaS俘获年轻人的心?

ToB行业头条

ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

SphereEx

Java php MySQL 数据库 ​Apache ShardingSphere

如何实现十亿级离线 CSV 导入 Nebula Graph

NebulaGraph

知识图谱 数据导入 Nebula Graph CSV 文件导入

新一代政务云的“前移”与“致远”

浪潮云

云计算

给你一个项目,你将如何开展性能测试工作?

伤心的辣条

Python 程序员 IT 自动化测试 接口测试

InnoDB体系架构

龙空白白

MySQL InnoDB

想发自己的NFT,你要先搞清楚这6个问题

华为云开发者联盟

区块链 数据资产 NFT

面试时必问的五大问题

伤心的辣条

Python 软件测试 自动化测试 测试开发 软件测试面试

数据关联最佳实践

观测云

可观测性 可观测

元气部落仿站开发,元气部落盲盒系统APP开发

WDL22119

盲盒小程序开发 盲盒源码 盲盒H5开发 盲盒APP系统开发 元气部落仿站开发

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Oracle弃用sun.reflect.Reflection.getCallerClass_Java_Vikram Gupta_InfoQ精选文章