jdk源码分析
文章平均质量分 92
String小四
这个作者很懒,什么都没留下…
展开
-
java源码分析-反射SecurityManager类
java反射源码分析-SecurityManager其实SecurityManager类并不是反射相关类图中的一员,但是在我们查看反射源码时经常看到如下的代码:checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);... private void checkMemberAccess(int which, Class<?> caller, boolean checkProxyInterfaces)原创 2021-07-06 07:30:47 · 438 阅读 · 1 评论 -
java源码分析-反射Constructor类
java反射源码分析-Constructor1.是什么? Constructor是java反射时用于表示构造函数的抽象,它包含一个类的构造函数的相关信息。java中一切都是对象,那么每一个构造函数也是一个对象,把这写构造函数抽象出来,就是Constructor类。public final class Constructor<T> extends Executable Executable:它是Method和Constructor的公共基类。它继承了AccessibleObject类原创 2021-06-10 07:53:42 · 735 阅读 · 1 评论 -
java源码分析-反射Method类
java反射源码分析-Method1.是什么 Method类提供有关类或接口上单个方法的信息和访问权限。Method反映的方法可以是类上的实力方法或者是静态方法也可以是接口上的抽象方法。public final class Method extends Executable通过类图,可以看到Executable类是Mehod的父类。实际上它是Method和Constructor的公共基类。2.如果获取有以下集中方法可以获取到Method类:2.1获取所有的方法通过Class类的getD原创 2021-06-08 15:31:59 · 434 阅读 · 1 评论 -
java源码分析-反射Class类
java反射源码分析-Class类1.Class类是什么 Class本质上也是java的一个类,这个类是对java所有的类的相关信息进行提取和抽象。简单说,Class类就表示创建类的类型信息。Class类的对象能够在允许时提供某个类对象的类型信息,包含了对构造函数、方法、变量等一系列操作。public final class Class<T> implements java.io.Serializable, GenericDec原创 2021-06-03 09:34:09 · 169 阅读 · 1 评论 -
java源码分析-运行期注解处理器
java源码分析-详说注解处理器上一篇《java源码分析-注解基本原理》中我们了解了注解的一些基本概念和基本原理,在文章最后也点了一下注解处理器,当时我说注解在使用时实际上是通过反射拿到注解信息,其实不是完全正确的。本篇,我们就来详细讨论一下注解处理器。1.注解处理器 注解处理器顾名思义,就是用来处理注解信息的,如果没有注解处理器,那么注解其实和注释是没有多大的区别。真是因为注解处理器的存在,才使得注解能够发挥起作用。那么java到底是怎么实现?Java的注解处理一般分为2种,最常见也是最显式化的就原创 2021-05-06 19:19:46 · 372 阅读 · 0 评论 -
java源码分析-编译期注解处理器
java源码分析-编译期注解处理器上一篇我们把运行时注解处理器的原理大致分析了一遍,本片我们来讨论一下编译期注解处理器的底层实现。1.Annotation Processing Tool1.1概述 Java编译期注解处理器,Annotation Processing Tool,简称APT,是Java提供给开发者的用于在编译期对注解进行处理的一系列API,这类API的使用被广泛的用于各种框架,如dubbo,lombok等。 Annotation Processing Tool注解处理器是 jav原创 2021-04-21 07:42:26 · 426 阅读 · 0 评论 -
java源码分析-注解基本原理
java源码分析-注解基本原理 java注解在实际工作中经常彭代,无论是java内置注解还是框架自带注解,在我们使用这些注解的时候是否思考过这些注解到底是什么作用?是怎么起作用的?java以及框架是怎么识别这些注解的?本篇我们就来聊一聊注解的基本原理。1.注解是什么 其实注解在大多数情况下与普通的修饰符(public,void,static等)在使用方式上并没有多大区别。我们先来看个例子:public class AnnotationDemo { @Override publi原创 2021-04-17 11:25:01 · 1952 阅读 · 0 评论 -
java源码分析-内部类
java源码分析-内部类 在我们学习源码的时候经常会看见内部类,本片我们就来详细了解一下内部类的底层原理。什么是内部类 什么叫内部类?通俗的说,内部类就是定义在一个类的内部的类。内部类本身其实也是一个类的属性,定义方式也是非常类似。举个例子:public class OuterClass1 { class InnerClass{ public void name(){ System.out.println("InnerClass.");原创 2021-03-28 17:41:30 · 251 阅读 · 0 评论 -
java源码分析-String类不可变性讨论
java源码分析-String类不可变性讨论在很多面试过程中,有一个经常被问到的问题,请你谈一谈String对象为什么说是不可变的?也许你会说,因为它被final修饰了,所以不可变。如果你这样回答,那么只能说,还是太年轻了。今天我们就好好讨论一下String对象的不可变性。1.不可变对象 要聊String对象的不可变性,我们先要搞明白什么是不可变对象?不可变对象,顾名思义,对象在创建之后对象就不能在改变了。对象的状态 对象的状态指的是存储在状态变量中的数据(状态变量包括实例或者静态域),还包原创 2021-03-17 20:34:35 · 145 阅读 · 1 评论 -
java源码分析-String类源码概要
java源码分析-String类源码概要1.简介 String类是我们java程序员使用频率非常大的类,我们都知道String类是不可变类,一旦定义就不可改变,那么它为什么不可变呢?它的内部做了什么处理呢?今天我们就好好研究一下String类。先上源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence通过上面我们能知道:String类被f原创 2021-03-16 07:11:12 · 211 阅读 · 0 评论 -
java源码分析-基本类型和包装类
java源码分析-基本类型和包装类1.类型、值和变量 java是一种静态类型语言,每个变量和表达式都在编译期就确定了类型。 java还是一种强类型语言,类型的确定就限定了类该类型变量的值或者表达式返回值的类型。1.1基本类型和引用类型 java语言的类型分为两种:基本类型和引用类型;基本类型包括布尔类型boolean和数字类型,其中数字类型包括整数类型byte、short、char、int和long以及浮点数类型float和double。引用类型包括类类型、接口类型和数组类型,另原创 2021-03-06 15:47:42 · 205 阅读 · 0 评论 -
java源码分析-Integer类
java源码-Integer类本篇我们来深入了解一下基本数据类型的包装类Integer。1.构造函数public Integer(int value) { this.value = value;}public Integer(String s) throws NumberFormatException { this.value = parseInt(s, 10);}通过传入一个int值来构造Integer对象;通过传入一个数值类型的字符串来构造一个Integer对象。2原创 2021-03-04 20:55:46 · 186 阅读 · 1 评论 -
java源码分析-native方法的调用
java源码分析-native方法的调用 这段时间在分析java源码时,经常能看到很多的底层源码中都调用了被native关键字修饰的方法,也就是java调用本地方法。但是在进行debug时有进不去,看不了具体的实现。因为这写方法是用c/c++实现的,那么这对我们分析源码就有了很多的阻碍,这些方法就像黑盒一样。于是我就在想,java是怎么调用这些本地方法的呢?接下来我们就一步步的探究一下这其中的原理。那么这一篇我们就来自己来通过java实现native方法的调用。1.什么是native方法 nat原创 2021-03-02 22:26:41 · 1500 阅读 · 2 评论 -
java源码分析-Object类wait/notify
java源码分析-Object类wait/notify 前面我们简单的把Object类的源码浏览了一遍,但是也只是简单的看了一下,没有深入学习。Object类作为java中所有类的基类,其重要性不言而喻。本片我们就来详细了解一下Object类中的wait方法和notify方法。源码:public final void wait() throws InterruptedException { wait(0);}public final native void wait(long time原创 2021-02-28 08:46:27 · 338 阅读 · 0 评论 -
java源码分析-Object类clone方法
java源码分析-Object类clone方法先看一下源码:/** * Creates and returns a copy of this object. The precise meaning * of "copy" may depend on the class of the object. The general * intent is that, for any object {@code x}, the expression: * <block原创 2021-02-27 14:53:19 · 332 阅读 · 0 评论 -
java源码分析-Object类
java源码分析-Object类Object类是类层次结构中的根类,每个类都使用它作为父类(超类),所有的对象(包括数组)都实现了这个类中的方法。1.静态代码块private static native void registerNatives();static { registerNatives();}将对象加载到内存时,首先执行静态代码块,执行registerNatives方法。这个方法的作用就是将Object类中其他的本地方法都机械能注册,方便java程序调用native方法时对原创 2021-02-25 07:29:07 · 134 阅读 · 3 评论 -
Idea搭建JDK8源码环境
Idea搭建JDK8源码环境1.准备IDE:IntelliJ IDEAjdk:oracle JDK8 下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 在JDK8的安装路径下找到src.zip压缩包,这就是我们需要的源码。2.搭建步骤2.1新建项目在Idea中,新建简单的java project,如下:2.2添加源码首先将JDK8的源码src.zip解压,然后将解压后的src目录下的所原创 2021-02-23 21:36:45 · 2105 阅读 · 0 评论