博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 反射一
阅读量:6659 次
发布时间:2019-06-25

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

再现上次面试的一个情景

面试官:java的工作原理是什么?

鄙人:JVM加载类用的是反射,通过classLoader及其子类(4种)依次查找

面试官继续问:java反射的原理是什么?

鄙人答曰:class反射

面试官继续追问:简单介绍下class

鄙人:...........

说实在,接触这么久java,没有拜读过《深入理解java虚拟机》真是愧对java工程师的称号

今天正好有时间,先简单写个例子

public class FieldClass {    private int age;    String name;    public static final boolean STATUS = false;    public FieldClass(String name, int age) {        this.name = name;        this.age = age;    }    public static void main(String[] args) throws SecurityException,            NoSuchFieldException, IllegalArgumentException,            IllegalAccessException {        FieldClass field = new FieldClass("draem0507", 26);        Field nameField = field.getClass().getDeclaredField("name");        System.out.println(nameField.get(field));        Class
fclass = FieldClass.class; Field Fields[] = fclass.getDeclaredFields(); for (Field f : Fields) { StringBuffer bf = new StringBuffer(); bf.append(f.getName()); bf.append("[修饰符:").append( isDefault(Modifier.toString(f.getModifiers()))); bf.append("类型:").append(f.getType().getSimpleName()); bf.append("]"); System.out.println(bf); } } private static String isDefault(String modifiers) { String mod = modifiers; if (modifiers.equals("")) { mod = "default"; } return mod; }}

执行结果

draem0507

age[修饰符:2--private类型:int]
name[修饰符:0--default类型:String]
STATUS[修饰符:25--public static final类型:boolean]

1.变量name因为是默认的修饰符,所以转换之后为空,因此做了简单的操作

2.关于

Modifier.toString 中使用&(二进制相同位数都为1,则为1,否则为0) 妙哉妙哉

 

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

你可能感兴趣的文章
linux桌面创建快捷方式
查看>>
Python实例浅谈之五Python守护进程和脚本单例运行
查看>>
CentOS 6.8 安装最新版 Git
查看>>
TransactionScope的用法
查看>>
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器提供的安全性认证无效...
查看>>
oracle goldengate技术架构-简单试验(全)
查看>>
Swift3 获取当前连接WIFI名称
查看>>
Tomcat灵活配置多项目,多端口,多域名,多虚拟目录
查看>>
Android SlideAndDragListView,一个可排序可滑动item的ListView
查看>>
Sort_Buffer_Size 设置对服务器性能的影响
查看>>
2017.04.19 有趣的木楔原理图
查看>>
spring cloud集成 consul源码分析
查看>>
聊聊工作和职业规划
查看>>
Android Studio 使用感受 错误解决
查看>>
Atitit 常见每日流程日程日常工作.docx v4
查看>>
mysql常用操作
查看>>
Spring----Spring Boot Rest的使用方法
查看>>
如何进行有效的需求调研
查看>>
mingw64环境搭建
查看>>
SSM&SSH项目中 springmvc 乱码问题解决
查看>>