JavaSE常用API文档下【java全端课】

62 阅读31分钟

十三、文件目录和IO流

13.1 java.io.File类

1、构造器

在API中File的解释是文件和目录路径名的抽象表示形式,即要表示某个文件或者目录必须指定文件或目录的路径名称,如:d:/atguigu/javase/io/佟刚.jpg,d:/atguigu,www.atguigu.com/index.jsp。

序号方法描述
1public File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
2public File(String parent, String child)父路径名字符串和子路径名字符串创建新的 File实例。
3public File(File parent, String child)父抽象路径名和子路径名字符串创建新的 File实例。

2、获取文件和目录基本信息的方法

序号方法描述
1public String getName()返回由此File表示的文件或目录的名称。
2public long length()返回由此File表示的文件的长度。 如果此路径名表示一个目录,则返回值是不确定的。
3public long lastModified()返回File对象对应的文件或目录的最后修改时间(毫秒值)。
4public boolean exists()此File表示的文件或目录是否实际存在。
5public boolean isDirectory()此File表示的是否为目录。
6public boolean isFile()此File表示的是否为文件。
7public boolean isHidden()此File表示的是否为隐藏文件或目录。
8public boolean canExecute()测试应用程序是否可以执行此抽象路径名表示的文件。
9public boolean canRead()测试应用程序是否可以读取此抽象路径名表示的文件。
10public boolean canWrite()测试应用程序是否可以修改此抽象路径名表示的文件。

3、创建删除文件和目录

序号方法描述
1public static File createTempFile(String prefix, String suffix) throws IOException在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
2public static File createTempFile(String prefix, String suffix, File directory) throws IOException在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
3public boolean createNewFile()当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
4public boolean delete()删除由此File表示的文件或==空==目录。
5public boolean mkdir()创建由此File表示的目录。
6public boolean mkdirs()创建由此File表示的目录,包括任何必需但不存在的父目录。
7public boolean renameTo(File dest)重新命名此抽象路径名表示的文件或目录。但是此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统。

4、文件或目录的上下级

序号方法描述
1public String getParent()返回此抽象路径名父目录的路径名字符串
2public File getParentFile()返回此抽象路径名父目录的抽象路径名
3public String[] list()返回一个String数组,表示该File目录中的所有子文件或目录。
4public File[] listFiles()返回一个File数组,表示该File目录中的所有的子文件或目录。
5public File[] listFiles(FileFilter filter)返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FileFilter.accept(File pathname)方法返回 true 时,该路径名才满足过滤器。
6public String[] list(FilenameFilter filter)返回返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FilenameFilter .accept(File dir, String name)方法返回 true 时,该路径名才满足过滤器。
7public File[] listFiles(FilenameFilter filter)返回返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的 FilenameFilter .accept(File dir, String name)方法返回 true 时,该路径名才满足过滤器。

5、各种路径问题

序号方法描述
1public String getPath()将此File转换为路径名字符串。
2public String getAbsolutePath()返回此File的绝对路径名字符串。
3String getCanonicalPath()返回此File对象所对应的规范路径名。

(1)绝对路径:

  • windows:从盘符开始的路径,就是绝对路径,例如:D:\download\学生项目
  • linux:从/符号开始的路径,就是绝对路径

(2)相对路径:

  • 除了绝对路径,就是相对路径。
  • 相对谁?JavaSE项目
    • main方法中代码:参考project(工程,项目)
    • @Test方法中代码:参考module(模块)

(3)构造路径:new File对象时,指定的path,它可能是相对路径,也可能是绝对路径,可能是规范路径,也可以是非规范路径。

(4)规范路径:不包含../等形式的路径值。

13.2 java.io.FileFilter

抽象路径名的过滤器。

  • public boolean accept(File pathname) 判断指定的抽象路径名是否应包含在路径名列表中。

13.3 IO流

13.3.1 IO流分类

按照继承关系分
分类父类子类描述
字节输入流InputStreamFileInputStream以字节为单位的方式读取任意类型的文件内容
BufferedInputStream包装其他InputStream流,先将其他InputStream流读取字节内容预先缓存到缓冲区,之后再从缓冲区中读取数据
DataInputStream包装其他InputStream流,并按照不同数据类型从该流中读取数据
ObjectInputStream包装其他InputStream流,并按照不同数据类型从该流中读取数据,并支持对象反序列化
字节输出流OutputStreamFileOutputStream以字节为单位的方式输出内容至任意类型的文件
BufferedOutputStream包装其他OutputStream流,先将数据先输出到缓冲区,之后再从缓冲区输出到所包装的输出流中
DataOutputStream包装其他OutputStream流,先按照不同数据类型将数据输出到该输出流,之后再从该流以字节方式输出到所包装的输出流中
ObjectOutputStream包装其他OutputStream流,先按照不同数据类型将数据输出到该输出流,之后再从该流以字节方式输出到所包装的输出流中,并支持对象的序列化
PrintStream将流中数据打印输出到文件或另一个OutputStream流中
字符输入流ReaderFileReader以字符为单位的方式读取纯文本文件的内容
BufferedReader包装其他Reader类,先将其他Reader流读取字符内容预先缓存到缓冲区,之后再从缓冲区中读取数据
InputStreamReader包装其他InputStream类,将所包装的InputStream流中的字节数据解码为字符
字符输出流WriterFileWriter以字符为单位的方式输出内容至纯文本文件
BufferedWriter包装其他Writer流,先将数据先输出到缓冲区,之后再从缓冲区输出到所包装的输出流中
OutputStreamWriter包装其他OutputStream类,将字符数据编码为字节数据输出到所包装的OutputStream流中
PrinterWriter将流中数据打印输出到文件或另一个Writer流中
按照功能划分
功能IO流描述
读写文件FileInputStream以字节为单位的方式读取任意类型的文件内容
FileOutputStream以字节为单位的方式输出内容至任意类型的文件
FileReader以字符为单位的方式读取纯文本文件的内容
FileWriter以字符为单位的方式输出内容至纯文本文件
打印流PrintStream将流中数据打印输出到文件或另一个OutputStream流中
PrintWriter将流中数据打印输出到文件或另一个OutputStream流中
转换流InputStreamReader包装其他InputStream类,将所包装的InputStream流中的字节数据解码为字符
OutputStreamWriter包装其他OutputStream类,将字符数据编码为字节数据输出到所包装的OutputStream流中
缓冲流BufferedInputStream包装其他InputStream流,先将其他InputStream流读取字节内容预先缓存到缓冲区,之后再从缓冲区中读取数据
BufferedOutputStream包装其他OutputStream流,先将数据先输出到缓冲区,之后再从缓冲区输出到所包装的输出流中
BufferedReader包装其他Reader类,先将其他Reader流读取字符内容预先缓存到缓冲区,之后再从缓冲区中读取数据
BufferedWrtier包装其他Writer流,先将数据先输出到缓冲区,之后再从缓冲区输出到所包装的输出流中
数据流DataInputStream包装其他InputStream流,并按照不同数据类型从该流中读取数据
DataOutputStream包装其他OutputStream流,先按照不同数据类型将数据输出到该输出流,之后再从该流以字节方式输出到所包装的输出流中
对象流ObjectInputStream包装其他InputStream流,并按照不同数据类型从该流中读取数据,并支持对象反序列化
ObjectOutputStream包装其他OutputStream流,先按照不同数据类型将数据输出到该输出流,之后再从该流以字节方式输出到所包装的输出流中,并支持对象的序列化

13.3.1 java.io.InputStream

  • public int read():一次读取1个字节,返回的该字节值。如果流中已经没有数据可读了,返回-1。
  • public int read(byte[] data):一次读取多个字节,返回的本次读取的字节个数。最多可以读取data.length个,如果流中不够data.length个,有几个字节读取几个。如果流中已经没有数据可读了,返回-1。读取的内容放入data字节数组[0, n)下标范围,n为本次读取的字节数量。
  • public int read(byte[] b, int off, int len):一次读取多个字节,返回的本次读取的字节个数。最多可以读取len个,如果流中不够len个,有几个字节读取几个。如果流中已经没有数据可读了,返回-1。读取的内容放入data字节数组[0, n)下标范围,n为本次读取的字节数量。
  • public void close():关闭IO流。

13.3.2 java.io.OutputStream

  • public void writer(int n):输出1个字节
  • public void write(byte [] data):输出整个字节数组中内容
  • public void write(byte [] data,int offset, int len):输出字节数组中一部分内容。从data的[offset]开始取len个字节。
  • public void close():关闭IO流。
  • public void flush():刷新IO流。

13.3.3 java.io.Reader

  • public int read():一次读取1个字符,返回的该字符的Unicode编码值。如果流中已经没有数据可读了,返回-1。
  • public int read(char[] data):一次读取多个字符,返回的本次读取的字符个数。最多可以读取data.length个,如果流中不够data.length个,有几个字符读取几个。如果流中已经没有数据可读了,返回-1。
  • public int read(char[] data, int off, int len):一次读取多个字符,返回的本次读取的字符个数。最多可以读取len个,如果流中不够len个,有几个字符读取几个。如果流中已经没有数据可读了,返回-1。读取的内容放入data字符数组[0, n)下标范围,n为本次读取的字符数量。
  • public void close():关闭IO流。

13.3.4 java.io.Writer

  • public void write(int ch):输出1个字符
  • public void write(String str):输出整个字符串
  • public void write(char[] data):输出整个char数组
  • public void write(char[] data, int offset, int len):输出char数组的一部分。从data数组的[offset]开始取len个字符输出。
  • public void write(String str, int offset, int ln):输出字符串的一部分。从str字符串的[offset]开始取len个字符输出。
  • public void close():关闭IO流。
  • public void flush():刷新IO流。

13.3.5 java.io.FileReader

  • public FileReader(File file):创建FileReader对象,从file文件读取内容
  • public FileReader(String fileName):创建FileReader对象,从fileName指定的文件读取文件内容
  • public FileReader(File file, Charset charset):创建FileReader对象,从file文件读取内容,文件编码是charset
  • public FileReader(String fileName, Charset charset)创建FileReader对象,从fileName指定的文件读取文件内容,文件编码是charset

13.3.6 java.io.FileWriter

  • public FileWriter(File file):创建FileWriter对象,将内容写到file文件。如果文件已存在,会覆盖原文件
  • public FileWriter(String fileName):创建FileWriter对象,将内容写到fileName指定的文件,如果文件已存在,会覆盖原文件
  • public FileWriter(File file, boolean append):创建FileWriter对象,将内容写到file文件。如果文件已存在,会进行续写。
  • public FileWriter(String fileName, boolean append):创建FileWriter对象,将内容写到fileName指定的文件,如果文件已存在,会进行续写。
  • public FileWriter(File file, Charset charset):创建FileWriter对象,将内容写到file文件。文件编码是charset。如果文件已存在,会覆盖原文件
  • public FileWriter(String fileName, Charset charset):创建FileWriter对象,将内容写到fileName指定的文件,文件编码是charset。如果文件已存在,会覆盖原文件。
  • public FileWriter(File file, Charset charset, boolean append):创建FileWriter对象,将内容写到file文件。文件编码是charset。如果文件已存在,会进行续写。
  • public FileWriter(String fileName, Charset charset, boolean append):创建FileWriter对象,将内容写到fileName指定的文件,文件编码是charset。如果文件已存在,会进行续写。

13.3.7 java.io.ObjectOutputStream

ObjectOutputStream必须包装一个OutputStream字节输出流对象。

  • public ObjectOutputStream(OutputStream out):创建一个写入指定的OutputStream的ObjectOutputStream。

ObjectOutputStream是OutputStream的子类,==除了OutputStream的方法==,还增加了一些方法:

序号方法描述
1public void writeBoolean(boolean val)输出一个boolean值
2public void writeByte(int val)输出一个byte值
3public void writeShort(int val)输出一个short值
4public void writeChar(int val)输出一个char值
5public void writeInt(int val)输出一个int值
6public void writeLong(long val)输出一个long值
7public void writeFloat(float val)输出一个float值
8public void writeDouble(double val)输出一个double值
9public void writeUTF(String str)输出一个String值
10public final void writeObject (Object obj)输出一个对象

13.3.8 java.io.ObjectInputStream

ObjectInputStream必须包装一个InputStream字节输入流对象。

  • ObjectInputStream(InputStream in):创建从指定的InputStream读取的ObjectInputStream。

ObjectInputStream是InputStream的子类,除了InputStream的方法,还增加了一些方法:

ObjectOutputStream是OutputStream的子类,==除了OutputStream的方法==,还新增了如下方法:

序号方法描述
1public boolean readBoolean()读取一个boolean值
2public byte readByte()读取一个byte值
3public short readShort()读取一个short值
4public char readChar()读取一个char值
5public int readInt()读取一个int值
6public long readLong()读取一个long值
7public float readFloat()读取一个float值
8public double readDouble()读取一个double值
9public String readUTF()读取一个String值
10public final Object readObject ()读取一个对象

13.3.9 java.io.PrintStream

  • PrintStream(File file):使用指定的文件创建一个新的打印流,而不需要自动换行。

  • PrintStream(File file, String csn):使用指定的文件和字符集创建新的打印流,而不需要自动换行。

  • PrintStream(OutputStream out):创建一个新的打印流。

  • PrintStream(OutputStream out, boolean autoFlush):创建一个新的打印流。

  • PrintStream(OutputStream out, boolean autoFlush, String encoding):创建一个新的打印流。

  • PrintStream(String fileName):使用指定的文件名创建新的打印流,不需要自动换行。

  • PrintStream(String fileName, String csn):创建一个新的打印流,不需要自动换行,具有指定的文件名和字符集。

PrintStream流是OutputStream流的子类,==除了OutputStream的方法==,还新增了如下方法:

序号方法描述
1public void print(boolean b)打印输出一个boolean值
2public void print(char b)打印输出一个char值
3public void print(char[] b)打印输出一个char[]
4public void print(double b)打印输出一个double值
5public void print(float b)打印输出一个float值
6public void print(int b)打印输出一个int值
7public void print(long b)打印输出一个long值
8public void print(Object b)打印输出一个对象,自动调用对象toString方法
9public void print(String b)打印输出一个字符串
10public void println()打印输出一个换行符
1public void println(boolean b)打印输出一个boolean值并换行
2public void println(char b)打印输出一个char值并换行
3public void println(char[] b)打印输出一个char[]并换行
4public void println(double b)打印输出一个double值并换行
5public void println(float b)打印输出一个float值并换行
6public void println(int b)打印输出一个int值并换行
7public void println(long b)打印输出一个long值并换行
8public void println(Object b)打印输出一个对象并换行,自动调用对象toString方法
9public void println(String b)打印输出一个字符串并换行

13.3.10 java.util.Scanner

  • public Scanner(File source):创建Scanner对象,从source文件读取内容
  • public Scanner(File source, String charsetName):创建Scanner对象,从source文件读取内容。文件编码是charsetName。
  • public Scanner(File source, Charset charset):创建Scanner对象,从source文件读取内容。文件编码是charset。
  • public Scanner(InputStream source):创建Scanner对象,从source输入流读取内容。
  • public Scanner(InputStream source, String charsetName):创建Scanner对象,从source输入流读取内容。流中文本编码是charsetName
  • public Scanner(InputStream source, Charset charset):创建Scanner对象,从source输入流读取内容。流中文本编码是charset

常用方法:

序号方法描述方法描述
1public boolean hasNextByte()当且仅当此扫描器的下一个标记是有效的字节值时才返回 truepublic byte nextByte()读取1个字节
2public boolean hasNextShort()当且仅当此扫描器的下一个标记是默认基数中的有效的 short 值时才返回 truepublic short nextShort()读取一个boolean值
3public boolean hasNextInt()当且仅当此扫描器的下一个标记是有效的 int 值时才返回 truepublic int nextInt()读取一个int值
4public boolean hasNextLong()当且仅当此扫描器的下一个标记是有效的 long 值时才返回 true将输入信息的下一个标记扫描为一个 long。读取一个long值
5public boolean hasNextFloat()当且仅当此扫描器的下一个标记是有效的 float 值时才返回 truepublic float nextFloat()读取一个float值
6public boolean hasNextDouble()当且仅当此扫描器的下一个标记是有效的 double 值时才返回 truepublic double nextDouble()读取一个double值
7public boolean hasNextBigInteger()当且仅当此扫描器的下一个标记是有效的 BigInteger 值时才返回 truepublic BigInteger nextBigInteger()读取一个BigInteger值
8public boolean hasNextBigDecimal()当且仅当此扫描器的下一个标记是有效的 BigDecimal 值时才返回 truepublic BigDecimal nextBigDecimal()读取一个BigDecimal值
9public boolean hasNext()如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。public String next()读取一个字符串,遇到空格结束
10public boolean hasNextLine()当且仅当此扫描器有另一行输入时才返回 truepublic String nextLine()读取一行字符串,遇到换行符结束

十四、网络编程

14.1 java.net.InetAddress

InetAddress类主要表示IP地址,两个子类:Inet4Address、Inet6Address。

Internet上的主机有两种方式表示地址:

  • 域名(hostName):www.atguigu.com
  • IP 地址(hostAddress):202.108.35.210

lInetAddress 类没有提供公共的构造器,而是提供 了 如下几个 静态方法来获取InetAddress 实例

  • public static InetAddress getLocalHost()
  • public static InetAddress getByName(String host)
  • public static InetAddress getByAddress(byte[] addr)

InetAddress 提供了如下几个常用的方法

  • public String getHostAddress() :返回 IP 地址字符串(以文本表现形式)。
  • public String getHostName() :获取此 IP 地址的主机名

14.2 UDP协议

14.2.1 DatagramSocket

此类表示用来发送和接收数据报包的套接字。数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

序号构造器或方法描述
1public DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。套接字将被绑定到通配符地址,IP 地址由内核来选择。
2public void send(DatagramPacket p)从此套接字发送数据报包。DatagramPacket 包含的信息指示:将要发送的数据、其长度、远程主机的 IP 地址和远程主机的端口号。
3public void receive(DatagramPacket p)从此套接字接收数据报包。当此方法返回时,DatagramPacket 的缓冲区填充了接收的数据。数据报包也包含发送方的 IP 地址和发送方机器上的端口号。 此方法在接收到数据报前一直阻塞。数据报包对象的 length 字段包含所接收信息的长度。如果信息比包的长度长,该信息将被截短。
4public void close()关闭此数据报套接字。

14.2.2 DatagramPacket类

DatagramPacket此类表示数据报包。 数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。

序号构造器和方法描述
1public DatagramPacket(byte[] buf,int length)构造 DatagramPacket,用来接收长度为 length 的数据包。 length 参数必须小于等于 buf.length。
2public DatagramPacket(byte[] buf,int length,InetAddress address,int port)构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。
3public int getLength()返回将要发送或接收到的数据的长度。
4public byte[] getData()返回数据缓冲区。

14.3 TCP协议

14.3.1 ServerSocket类

序号构造器或方法描述
1ServerSocket(int port)创建绑定到特定端口的服务器套接字。
2Socket accept()侦听并接受到此套接字的连接。
3public void close()关闭此套接字。

14.3.2 Socket类

序号构造器或方法描述
1public Socket(InetAddress address,int port)创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
2public Socket(String host,int port)创建一个流套接字并将其连接到指定主机上的指定端口号。
3public InputStream getInputStream()返回此套接字的输入流,可以用于接收消息
4public OutputStream getOutputStream()返回此套接字的输出流,可以用于发送消息
5public InetAddress getInetAddress()此套接字连接到的远程 IP 地址;如果套接字是未连接的,则返回 null。
6public int getPort()此套接字连接到的远程端口号;如果尚未连接套接字,则返回 0。
7public InetAddress getLocalAddress()获取套接字绑定的本地地址。
8public int getLocalPort()返回此套接字绑定到的本地端口。如果尚未绑定套接字,则返回 -1。
9public void close()关闭此套接字。套接字被关闭后,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。需要创建新的套接字对象。 关闭此套接字也将会关闭该套接字的 InputStream 和 OutputStream。
10public void shutdownInput()如果在套接字上调用 shutdownInput() 后从套接字输入流读取内容,则流将返回 EOF(文件结束符)。 即不能在从此套接字的输入流中接收任何数据。
11public void shutdownOutput()禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException。 即不能通过此套接字的输出流发送任何数据。

**注意:**先后调用Socket的shutdownInput()和shutdownOutput()方法,仅仅关闭了输入流和输出流,并不等于调用Socket的close()方法。在通信结束后,仍然要调用Scoket的close()方法,因为只有该方法才会释放Socket占用的资源,比如占用的本地端口号等。

十五、反射

15.1 获取Class对象的四种方式

(1)类型名.class:获取某类型的Class对象

	@Test
    public void test1(){
        Class<?> c1 = int.class;

        Class<?> c2 = void.class;

        Class<?> c3 = String.class;
        Class<?> c4 = Serializable.class;
        Class<?> c5 = Month.class;
        Class<?> c6 = int[].class;
        Class<?> c7 = Override.class;

        //类型不同Class对象就不同
        //类型相同Class对象就相同
    }

(2)对象.getClass():获取对象的运行时类型

@Test
    public void test1(){
       Class c =  int.class;//int类型的字节码数据在内存中的Class对象
       Class s = String.class;//String类型的字节码数据在内存中的Class对象
        System.out.println(c == s);//false
    }

    @Test
    public void test2()throws Exception{
        Class c1 = "hello".getClass();//字符串类型
        Class c2 = String.class;//字符串类型
        System.out.println(c1 == c2);//true
        Class c3 = Class.forName("java.lang.String");
        System.out.println(c1 == c3);//true
    }

(3)Class.forName("类型全名称"):获取某类型的Class对象

Class c3 = Class.forName("java.lang.String");

(4)ClassLoader的类加载器对象.loadClass(类型全名称):可以用系统类加载对象或自定义加载器对象加载指定路径下的类型

Class c = ClassLoader.getSystemClassLoader().loadClass("java.lang.String");

15.2 相关类的API

1、java.lang.Class类

序号方法描述
1public static Class<?> forName(String className)throws ClassNotFoundException返回与带有给定字符串名的类或接口相关联的 Class 对象。
2public Package getPackage()获取此类的包。
3public int getModifiers()返回此类或接口以整数编码的 Java 语言修饰符。
4public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
5public Class<? super T> getSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。
6public Type getGenericSuperclass()回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。
7public Class<?>[] getInterfaces()确定此对象所表示的类或接口实现的接口。如果此对象表示一个类,则返回值是一个数组,它包含了表示该类所实现的所有接口的对象。
8public Type[] getGenericInterfaces()返回表示某些接口的 Type,这些接口由此对象所表示的类或接口直接实现。
9public Field[] getFields() throws SecurityException返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。返回数组中的元素没有排序,也没有任何特定的顺序。
10public Field getField(String name) throws NoSuchFieldException, SecurityException返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。name 参数是一个 String,用于指定所需字段的简称。
11public Field[] getDeclaredFields() throws SecurityException返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。
12public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。name 参数是一个 String,它指定所需字段的简称。
13public Constructor<?>[] getConstructors() throws SecurityException返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。
14public Constructor getConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。parameterTypes 参数是 Class 对象的一个数组,这些 Class 对象按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
15public Constructor<?>[] getDeclaredConstructors() throws SecurityException返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法。
16public Constructor getDeclaredConstructor(Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
17public Method[] getMethods() throws SecurityException返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。
18public Method getMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。name 参数是一个 String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组。
19public Method[] getDeclaredMethods() throws SecurityException返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。返回数组中的元素没有排序,也没有任何特定的顺序。
20public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。name 参数是一个 String,它指定所需方法的简称,parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识该方法的形参类型。
21public Class<?>[] getClasses()返回一个包含某些 Class 对象的数组,这些对象表示属于此 Class 对象所表示的类的成员的所有公共类和接口。(即内部类)
22public Class<?>[] getDeclaredClasses() throws SecurityException返回 Class 对象的一个数组,这些对象反映声明为此 Class 对象所表示的类的成员的所有类和接口。包括该类所声明的公共、保护、默认(包)访问及私有类和接口,但不包括继承的类和接口。
23public Class<?> getDeclaringClass()如果此 Class 对象所表示的类或接口是另一个类的成员,则返回的 Class 对象表示该对象的声明类。如果该类或接口不是其他类的成员,则此方法返回 null。(即外部类)
24public Annotation[] getAnnotations()返回此类型上存在的注解,包括从父类继承的注解。
25public Annotation[] getDeclaredAnnotations()返回直接存在于此类型上的注解,不包括从父类继承的注解。
26public A getAnnotation(Class annotationClass)返回此类型上的某个注解。
27public boolean isAnonymousClass()是否是匿名类
28public boolean isLocalClass()是否是局部内部类
29public boolean isMemberClass()是否是成员内部类
30public boolean isArray()是否是数组类型
31public boolean isPrimitive()是否是基本数据类型或void
32public boolean isInterface()是否是接口类型
33public boolean isEnum()是否是枚举类型
34public boolean isAnnotation()是否是注解类型
35public T newInstance() throws InstantiationException, IllegalAccessException创建此 Class 对象所表示的类的一个新实例。要求该类必须有一个公共的无参构造。此方法已过时。
36public ClassLoader getClassLoader()返回该类的类加载器。如果该类由引导类加载器加载,则此方法在这类实现中将返回 null。

2、java.lang.reflect.Modifier类

序号常量或方法描述
1public static final int PUBLIC0x00000001
2public static final int PRIVATE0x00000002
3public static final int PROTECTED0x00000004
4public static final int STATIC0x00000008
5public static final int FINAL0x00000010
6public static final int SYNCHRONIZED0x00000020
7public static final int VOLATILE0x00000040
8public static final int TRANSIENT0x00000080
9public static final int NATIVE0x00000100
10public static final int INTERFACE0x00000200
11public static final int ABSTRACT0x00000400
12public static final int STRICT0x00000800
13public static String toString(int mod)返回描述指定修饰符中的访问修饰符标志的字符串。

3、java.lang.reflect.Constructor

序号方法描述
1public Annotation[] getDeclaredAnnotations()返回构造器上的所有注解类型
2public T getAnnotation(Class annotationClass)返回构造器上指定的注解类型
3public int getModifiers()以整数形式返回此 Constructor 对象所表示构造方法的 Java 语言修饰符。应该使用 Modifier 类对这些修饰符进行解码。
4public String getName()以字符串形式返回此构造方法的名称。它总是与构造方法的声明类的简单名称相同。
5public Class<?>[] getParameterTypes()按照声明顺序返回一组 Class 对象,这些对象表示此 Constructor 对象所表示构造方法的形参类型。
6public Class<?>[] getExceptionTypes()回一组表示声明throws的异常类型的 Class 对象
7public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。
8public void setAccessible(boolean flag) throws SecurityException将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。

4、java.lang.reflect.Field

序号方法描述
1public Annotation[] getDeclaredAnnotations()返回字段上的所有注解类型
2public T getAnnotation(Class annotationClass)返回字段上指定的注解类型
3public int getModifiers()以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。应该使用 Modifier 类对这些修饰符进行解码。
4public Class<?> getType()返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。
5public String getName()返回此 Field 对象表示的字段的名称。
6public void setAccessible(boolean flag) throws SecurityException将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
7public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException将指定对象变量上此 Field 对象表示的字段设置为指定的新值。如果底层字段是静态字段,则忽略 obj 变量;它可能为 null。
8public Object get(Object obj) throws IllegalArgumentException, IllegalAccessException返回指定对象上此 Field 表示的字段的值。如果底层字段是一个静态字段,则忽略 obj 变量;它可能为 null。

5、java.lang.reflect.Method

序号方法描述
1public Annotation[] getDeclaredAnnotations()返回某方法上的所有注解类型
2public T getAnnotation(Class annotationClass)返回某方法上指定的注解类型
3public int getModifiers()以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符。应该使用 Modifier 类对这些修饰符进行解码。
4public Class<?> getReturnType()返回一个 Class 对象,该对象描述了此 Method 对象所表示的方法的正式返回类型。
5public String getName()返回此 Field 对象表示的字段的名称。
6public Class<?>[] getParameterTypes()按照声明顺序返回一组 Class 对象,这些对象表示此Method对象所表示方法的形参类型。
7public Class<?>[] getExceptionTypes()回一组表示声明throws的异常类型的 Class 对象
8public void setAccessible(boolean flag) throws SecurityException将此对象的 accessible 标志设置为指示的布尔值。值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
9public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。

6、java.lang.reflect.Array

在java.lang.reflect包下还提供了一个Array类,Array对象可以代表所有的数组。程序可以通过使用Array类来动态的创建数组,操作数组元素等。

序号方法描述
1public static Object newInstance(Class<?> componentType, int length) throws NegativeArraySizeException创建一个具有指定的组件类型和长度的新数组。
2public static void set(Object array, int index, Object value) throws IllegalArgumentException, ArrayIndexOutOfBoundsException将array数组中[index]元素的值修改为value。
3public static Object get(Object array, int index) throws IllegalArgumentException, ArrayIndexOutOfBoundsException返回指定数组对象中索引组件的值。

15.3 类加载器

  • public static ClassLoader getSystemClassLoader():返回系统类加载器。

  • public static InputStream getSystemResourceAsStream(String name) :从加载类的搜索路径中加载指定名称的资源。

  • public ClassLoader getParent():返回父加载器。

  • public InputStream getResourceAsStream(String name):从加载类的搜索路径中加载指定名称的资源。

  • public Class<?> loadClass(String name):指定类型的全名称加载字节码数据,并返回Class对象。