java.lang - 不用import

本文介绍了Java 8中的java.lang包,该包是Java语言核心,提供基础类。涵盖对象基类、基本类型包装类、字符串类等多种类型的类,还涉及数学、安全、注解等工具类,以及进程、线程、运行等系统相关类,且无需使用import导入。

 

java.lang - 不用import - 努力的小白 - 优快云博客
https://blog.youkuaiyun.com/weixin_43670802/article/details/88166912

 

java.lang - 不用import

 

java.lang包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。我们介绍一下Java 8中的java.lang包。主要类如下图:

在这里插入图片描述

类型

对象基类
Object,是java.lang的根类,也是所有类的超类。


Class,用来表示类和接口的类型。Class对象在类加载时由JVM调用类加载器中的defineClass方法自动构造。
ClassLoader,负责加载类。
Compiler,作为编译器的占位符,它不做任何事情,仅用来支持Java到本机代码的编译器及相关服务。

基本类型
基本类型的包装类,包括Boolean、Character、Byte、Short、Integer、Long、Float、Double,其中数值类型均即成Number类。
String,字符串类。

字符序列
StringBuffer、StringBuilder,可变的字符序列。

枚举
Enum,是所有枚举类型的公共基类。


Package,包含了有关Java包(package)的信息。

无类型
Void,标示关键字void的Class对象的引用,不可被实例化。

迭代器
Iterable,可迭代接口,实现接口可以使用迭代器进行对象遍历。

工具

数学
Math、StrictMath,提供了基本的数字操作,如指数、对数、平方根和三角函数。一般情况下,Math调用StrictMath的方法来完成实现。java中还有一个java.math包,这个包主要提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。

安全
SecurityManager,允许应用程序实现安全策略的类。

注解
Override,标记类中方法是实现/重写父类的方法。
SuppressWarnings,取消对被标记的元素的警告。
系统

进程
Process,进程抽象类。
ProcessBuilder,用于创建操作系统进程。
ProcessEnvironment,进程的运行环境参数。
ProcessImpl,进行接口的实现类。

线程
Thread,进程中的执行线程。
ThreadGroup,线程组,表示一个线程的集合。它构成一个树状结构,可以包含其他线程组,除了根节点的线程组,每个线程组都具有父线程组。
ThreadLocal,提供线程的变量。

运行
Runnable,可运行接口,所有Thread都应实现它。
Runtime,运行时类,将应用程序与其运行的环境相关联。
RuntimePermission,用于运行时权限。
System,系统级的很多属性和控制方法都放置在该类的内部。

堆栈
StackTraceElement,堆栈跟踪中的元素,它的每个实例都表示单独的一个栈帧(表示一个方法调用)。

异常
Throwable,异常基类,Java中所有异常都继承于它。

原文:https://www.cnblogs.com/zedosu/p/6518124.html

### Cglib代理导致的`InaccessibleObjectException`问题分析 当使用Cglib代理时,可能会遇到`InaccessibleObjectException`异常。此问题通常发生在尝试访问某些受保护或受限的方法/字段时,尤其是在JDK 9及以上版本中引入模块化系统(即JPMS, Java Platform Module System)之后[^1]。 #### 原因解析 自JDK 9起,Java引入了模块化的概念,增强了加载器的安全性和封装性。默认情况下,许多内部API被限制访问,除非显式声明开放权限。如果Cglib试图通过反射修改这些不可见成员(如protected final方法),就会抛出`InaccessibleObjectException`异常。 #### 解决方案 以下是几种可能的解决方案: 1. **启用强名访问控制** 可以通过启动参数设置来放宽对特定的访问限制。例如,在运行程序时添加如下选项: ```bash --add-opens java.base/java.lang=ALL-UNNAMED ``` 这一命令会打开`java.base`模块中的`java.lang`给未命名模块使用,从而允许Cglib对其进行操作。 2. **升级依赖库** 确保使用的Spring框架或其他涉及AOP功能的相关组件已更新至最新稳定版。新版本往往针对不同JDK环境进行了兼容性优化处理。 3. **调整代码逻辑** 如果条件允许,可以考虑重构业务逻辑,减少对于那些难以直接操控部分的需求;或者切换到其他不依赖深层反射机制的技术实现方式,比如纯接口型动态代理模式等替代方案。 4. **定制ClassLoader** 创建自定义加载器实例并重写其中findClass()方法来自行管理资源定位过程,则有可能绕过标准安全策略检查流程达到目的。不过这种方法风险较高且维护成本较大,需谨慎评估利弊后再决定是否采用。 ```python import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; public class CustomEnhancer implements MethodInterceptor { public static void main(String[] args){ Enhancer enhancer=new Enhancer(); enhancer.setSuperclass(TargetClass.class); enhancer.setCallback(new CustomEnhancer()); TargetClass proxy=(TargetClass)enhancer.create(); } @Override public Object intercept(Object obj, java.lang.reflect.Method method, Object[] arguments,net.sf.cglib.proxy.MethodProxy proxyMethod) throws Throwable{ return null; // Implement your logic here. } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值