Java再学习之一反射

1. getField和getDeclaredField

以前对这两个方法不是很熟悉,今天又遇到关于动态获取属性的问题。getField获得类中指定的public属性;getDeclaredField返回指定类中指定的属性(任何可见性)。看下面一个简单的例子:

package com;

import java.lang.reflect.Field;
import java.util.*;

public class MyUtil {

	public static void main(String[] args) {
		testFields();
	}
	
	public static void testFields() {
		try {
			System.out.println("Declared fields: ");
			Field[] fields = Dog.class.getDeclaredFields();
			for(int i = 0; i < fields.length; i++) {
				System.out.println(fields[i].getName()); // 此处结果是color, name, type, fur
			}
			
			System.out.println("Public fields: ");
			fields = Dog.class.getFields();
			for(int i = 0; i < fields.length; i++) {
				System.out.println(fields[i].getName()); // 此处结果是color, location
			}

			Dog dog = new Dog();
			dog.setAge(1);
			Method method = dog.getClass().getMethod("getAge", null);
			Object value = method.invoke(dog);
			System.out.println(value); // 此处结果是1
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

class Dog extends Animal {
	public int color;
	protected int name;
	private int type;
	int fur;
}

class Animal {
	public int location;
	protected int age;
	private int height;
	int length;	

	public int getAge() {
		return age;
	}

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

可见,getDeclaredField可以获得类中任何可见性的属性不包括基类,而getField只能获得public属性包括基类的public属性。如果需要获取基类某个非public属性的值,则只能通过反射来调用方法了,从上述code可以看到。注意,getField只能得到public方法。

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值