java反射:Clss对象的三种方法

本文介绍了Java反射机制的基本概念,展示了如何通过三种不同的方式获取Class对象,包括使用类名的.class属性、对象名的.getClass()方法及Class的forName()方法,并提供了一个具体的Student类实例来演示这些方法的应用。

java反射机制:在运行转态中,对于任意一个类都能够知道这个类的所有属性和方法;对于任何对象,都能调用它的任意属性和方法;

获取Class类对象的三种方法

在这里插入图片描述
创建 Student类

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void study(){
        System.out.println("学生在学习");
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

创建Class类的三种方式:

  • 类名.class属性

  • 对象名.getClass()方法

  • Class.forName(全类名)方法

		/**
         * 获取字节码文件的三种方式:
         */
        //一:
        Class<Student> student1 = Student.class;

        //二:
        Student student2 = new Student ();
        Class<? extends Student> studentClass= student2.getClass ();

        //三:
        Class student3 = Class.forName ("com.lntower.loader.StudentTest");
### 如何导出Java编译后的class文件并保存到指定文件夹 在Java开发中,将`.java`文件编译为`.class`文件后,通常需要将其保存到指定的文件夹中以方便后续使用或部署。以下是实现这一目标的具体方法和注意事项。 #### 1. 使用命令行编译并指定输出目录 通过`javac`命令可以编译单个或多个`.java`文件,并将生成的`.class`文件保存到指定的文件夹中。命令格式如下: ```bash javac -d <output_directory> <source_file> ``` - `<output_directory>`:指定生成的`.class`文件存放的目录[^2]。 - `<source_file>`:需要编译的`.java`文件路径。 例如,假设有一个名为`Main.java`的文件位于`C:\project\src`目录下,希望将编译后的`.class`文件保存到`C:\project\bin`目录中,则执行以下命令: ```bash javac -d C:\project\bin C:\project\src\Main.java ``` #### 2. IDE中的配置(以Eclipse为例) 在Eclipse等IDE中,默认情况下编译后的`.class`文件会被保存到项目的`bin`目录下[^1]。如果需要更改输出目录,可以通过以下步骤完成: 1. 右键点击项目名称,选择“Properties”。 2. 在弹出的窗口中选择“Java Build Path”。 3. 切换到“Output Folder”选项卡,点击右侧的“Browse”按钮选择新的输出目录。 4. 点击“OK”保存设置。 #### 3. 手动移动`.class`文件 如果已经生成了`.class`文件但未指定输出目录,可以手动将其复制到目标文件夹中。需要注意的是,`.class`文件的存放路径应与包结构一致。例如,对于以下代码: ```java package com.example; public class Main { public static void main(String[] args) { System.out.println("Hello World"); } } ``` 编译后生成的`Main.class`文件应存放在`<output_directory>\com\example`路径下[^1]。 #### 4. 使用反编译工具查看或重新编译 如果需要对已有的`.class`文件进行反编译并重新编译,可以使用如`jad`等工具。例如,反编译整个包下的所有`.class`文件: ```bash jad -sjava packages/**/*.class ``` 反编译后的源代码文件可能需要手动调整包路径后再重新编译[^4]。 #### 注意事项 - 如果编译时依赖其他类库,需确保通过`-cp`参数正确指定classpath[^2]。 - 在某些情况下,可能需要管理员权限才能访问特定目录。 - 确保目标文件夹已存在,否则可能会导致编译失败。 ```python # 示例代码:检查目标目录是否存在,若不存在则创建 import os output_dir = "C:\\project\\bin" if not os.path.exists(output_dir): os.makedirs(output_dir) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值