Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java反射获取父类的属性

作者:农村混血兒   发布日期:2025-06-20   浏览:19

import java.lang.reflect.Field;

class Parent {
    private String parentField = "I'm a parent field";

    public String getParentField() {
        return parentField;
    }
}

class Child extends Parent {
    private String childField = "I'm a child field";
}

public class ReflectionExample {
    public static void main(String[] args) {
        try {
            // 获取子类的Class对象
            Class<?> childClass = Child.class;

            // 创建子类实例
            Object childInstance = childClass.getDeclaredConstructor().newInstance();

            // 获取父类的Class对象
            Class<?> parentClass = childClass.getSuperclass();

            // 获取父类的所有属性(包括私有属性)
            Field[] fields = parentClass.getDeclaredFields();

            for (Field field : fields) {
                // 设置访问权限为可访问(即使是private修饰的属性)
                field.setAccessible(true);

                // 获取属性名称和值
                String fieldName = field.getName();
                Object fieldValue = field.get(childInstance);

                System.out.println("Parent field name: " + fieldName);
                System.out.println("Parent field value: " + fieldValue);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解释说明:

  1. 定义父类 Parent 和子类 Child

    • 父类 Parent 中有一个私有属性 parentField
    • 子类 Child 继承自 Parent,并有自己的私有属性 childField
  2. 获取子类的 Class 对象

    • 使用 Child.class 获取子类的 Class 对象。
  3. 创建子类实例

    • 使用反射创建子类的实例 childInstance
  4. 获取父类的 Class 对象

    • 使用 getSuperclass() 方法获取父类的 Class 对象。
  5. 获取父类的所有属性

    • 使用 getDeclaredFields() 方法获取父类的所有属性,包括私有属性。
  6. 设置属性为可访问

    • 使用 field.setAccessible(true) 来确保可以访问私有属性。
  7. 获取属性名称和值

    • 使用 field.getName() 获取属性名称。
    • 使用 field.get(childInstance) 获取属性值。
  8. 输出结果

    • 打印父类属性的名称和值。

上一篇:java 随机

下一篇:java是面向对象的吗

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站