博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习的总结
阅读量:1819 次
发布时间:2019-04-25

本文共 6356 字,大约阅读时间需要 21 分钟。

java.lang.Class 类

java.lang.Class 类是实现反射的关键所在,Class 类的一个实例表示 Java 的一种数据类型,包括类、接口、枚举、注解(Annotation)、数组、基本数据类型和 void。Class 没有公有的构造方法,Class 实例是由 JVM 在类加载时自动创建的。

public class ReflectionTest01 {    public static void main(String[] args) {        // 获得Class实例        // 1.通过类型class静态变量        Class clz1 = String.class;        String str = "Hello";        // 2.通过对象的getClass()方法        Class clz2 = str.getClass();        // 获得int类型Class实例        Class clz3 = int.class;        // 获得Integer类型Class实例        Class clz4 = Integer.class;        System.out.println("clz2类名称:" + clz2.getName());        System.out.println("clz2是否为接口:" + clz2.isInterface());        System.out.println("clz2是否为数组对象:" + clz2.isArray());        System.out.println("clz2父类名称:" + clz2.getSuperclass().getName());        System.out.println("clz2是否为基本类型:" + clz2.isPrimitive());        System.out.println("clz3是否为基本类型:" + clz3.isPrimitive());        System.out.println("clz4是否为基本类型:" + clz4.isPrimitive());    }}​//clz2类名称:java.lang.String//clz2是否为接口:false//clz2是否为数组对象:false//clz2父类名称:java.lang.Object//clz2是否为基本类型:false//clz3是否为基本类型:true//clz4是否为基本类型:false

java.lang.reflect 包

java.lang.reflect 包提供了反射中用到类,主要的类说明如下:

Constructor 类:提供类的构造方法信息。

Field 类:提供类或接口中成员变量信息。

Method 类:提供类或接口成员方法信息。

Array 类:提供了动态创建和访问 Java 数组的方法。

Modifier 类:提供类和成员访问修饰符信息。

public class ReflectionTest02 {    public static void main(String[] args) {        try {            // 动态加载xx类的运行时对象            Class c = Class.forName("java.lang.String");            // 获取成员方法集合            Method[] methods = c.getDeclaredMethods();            // 遍历成员方法集合            for (Method method : methods) {                // 打印权限修饰符,如public、protected、private                System.out.print(Modifier.toString(method.getModifiers()));                // 打印返回值类型名称                System.out.print(" " + method.getReturnType().getName() + " ");                // 打印方法名称                System.out.println(method.getName() + "();");            }        } catch (ClassNotFoundException e) {            System.out.println("找不到指定类");        }    }}

Constructor类的常用方法

通过 java.lang.reflect.Modifier 类可以解析出 getMocMers() 方法的返回值所表示的修饰符信息。在该类中提供了一系列用来解析的静态方法,既可以查看是否被指定的修饰符修饰,还可以字符串的形式获得所有修饰符。

Modifier类的常用方法

int modifiers = con.getModifiers();    // 获取构造方法的修饰符整数boolean isPublic = Modifier.isPublic(modifiers);    // 判断修饰符整数是否为public string allModifiers = Modifier.toString(modifiers);

Method 类的常用方法

public class Book1 {    // static 作用域方法    static void staticMethod() {        System.out.println("执行staticMethod()方法");    }    // public 作用域方法    public int publicMethod(int i) {        System.out.println("执行publicMethod()方法");        return 100 + i;    }    // protected 作用域方法    protected int protectedMethod(String s, int i) throws NumberFormatException {        System.out.println("执行protectedMethod()方法");        return Integer.valueOf(s) + i;    }    // private 作用域方法    private String privateMethod(String... strings) {        System.out.println("执行privateMethod()方法");        StringBuffer sb = new StringBuffer();        for (int i = 0; i < sb.length(); i++) {            sb.append(strings[i]);        }        return sb.toString();    }}

输入输出流

输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。

数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。

1、按照流的方向主要分为输入流和输出流两大类。

2、数据流按照数据单位的不同分为字节流和字符流。

3、按照功能可以划分为节点流和处理流。

系统流对应的类为 java.lang.System

System.in:标准输入流,默认设备是键盘。

System.out:标准输出流,默认设备是控制台。

System.err:标准错误流,默认设备是控制台。

File类

public class Test02 {    public static void main(String[] args) {        String path = "C:/windows/"; // 指定文件所在的目录        File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用        System.out.println("C:\\windows\\notepad.exe文件信息如下:");        System.out.println("============================================");        System.out.println("文件长度:" + f.length() + "字节");        System.out.println("文件或者目录:" + (f.isFile() ? "是文件" : "不是文件"));        System.out.println("文件或者目录:" + (f.isDirectory() ? "是目录" : "不是目录"));        System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));        System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));        System.out.println("是否隐藏:" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件"));        System.out.println("最后修改日期:" + new Date(f.lastModified()));        System.out.println("文件名称:" + f.getName());        System.out.println("文件路径:" + f.getPath());        System.out.println("绝对路径:" + f.getAbsolutePath());    }}/**C:\windows\notepad.exe文件信息如下:============================================文件长度:193536字节文件或者目录:是文件文件或者目录:不是目录是否可读:可读取是否可写:可写入是否隐藏:不是隐藏文件最后修改日期:Mon Dec 28 02:55:19 CST 2016文件名称:notepad.exe文件路径:C:\windows\notepad.exe绝对路径:C:\windows\notepad.exe*/
public class Test03 {    public static void main(String[] args) throws IOException {        File f = new File("C:\\test.txt"); // 创建指向文件的File对象        if (f.exists()) // 判断文件是否存在        {            f.delete(); // 存在则先删除        }        f.createNewFile(); // 再创建    }}

查找文件

File 类的 list() 方法提供了遍历目录功能

public class Demon {    public static void main(String[] args) {        File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用        System.out.println("文件名称\t\t文件类型\t\t文件大小");        System.out.println("===================================================");        String fileList[] = f.list(); // 调用不带参数的list()方法        for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组            System.out.print(fileList[i] + "\t\t");            System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");            System.out.println((new File("C:/", fileList[i])).length() + "字节");        }    }}

创建和删除文件

File 类不仅可以获取已知文件的属性信息,还可以在指定路径创建文件,以及删除一个文件。创建文件需要调用 createNewFile() 方法,删除文件需要调用 delete() 方法。无论是创建还是删除文件通常都先调用 exists() 方法判断文件是否存在。

public class Test03 {    public static void main(String[] args) throws IOException {        File f = new File("C:\\test.txt"); // 创建指向文件的File对象        if (f.exists()) // 判断文件是否存在        {            f.delete(); // 存在则先删除        }        f.createNewFile(); // 再创建    }}

创建和删除目录

File 类除了对文件的创建和删除外,还可以创建和删除目录。创建目录需要调用 mkdir() 方法,删除目录需要调用 delete() 方法。无论是创建还是删除目录都可以调用 exists() 方法判断目录是否存在。

public class Test04 {    public static void main(String[] args) {        String path = "C:/config/"; // 指定目录位置        File f = new File(path); // 创建File对象        if (f.exists()) {            f.delete();        }        f.mkdir(); // 创建目录    }}

 

转载地址:http://cgukf.baihongyu.com/

你可能感兴趣的文章
Spring:源码解读Spring IOC原理
查看>>
Spring AOP原理分析一次看懂
查看>>
Spring AOP的实现原理(二)
查看>>
Spring AOP的实现原理(三)
查看>>
Spring AOP的实现原理(四)
查看>>
Spring AOP的实现原理(五)
查看>>
Java动态代理与CGLIB
查看>>
Java 9 新特性
查看>>
缓存与数据库不一致
查看>>
Gson的入门使用
查看>>
SpringBoot之集成Spring AOP
查看>>
Linux免密码登录设置
查看>>
JVM命令使用演示
查看>>
面试中并发类问题的准备和学习
查看>>
2018 Java 后端工程师的书单推荐
查看>>
使用IPVS实现Kubernetes入口流量负载均衡
查看>>
ETCD原理详细解析
查看>>
Docker 快速删除所有容器
查看>>
解决删除镜像时image is referenced in multiple repositories
查看>>
分布式锁的实现方式
查看>>