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

本文共 1680 字,大约阅读时间需要 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) 妙哉妙哉

 

转载于:https://www.cnblogs.com/draem0507/archive/2013/06/08/3127099.html

你可能感兴趣的文章
解决Unable to locate theme engine in module_path: "pixmap"
查看>>
贝叶斯文本分类c#版
查看>>
Centos安装KDE或GNOME
查看>>
Eclipse & IDEA 中常用的快捷键
查看>>
javascript ---IPhone滑动解锁
查看>>
table固定行和表头
查看>>
<每天读一点职场心理学>读书笔记
查看>>
android 判断SIM卡是哪个运营商
查看>>
删除N天前的M(天)个目录 、删除N天前最后修改的文件 ForFiles, dos command 批处理命令cmd/bat...
查看>>
[转载]Visual Studio 2010敏捷利剑:详解Scrum
查看>>
Java Collection: List、Set、 Map、 HashMap、 Hashtable、 Vector
查看>>
T-SQL查询进阶--流程控制语句
查看>>
备份Toad中保存的数据库连接用户名和密码
查看>>
ASP.NET中 Repeater 的使用前台绑定
查看>>
微信公众平台模拟群发技术
查看>>
C语言学习之指针详解
查看>>
学习使用Bing Maps Silverlight Control(一):准备和新建
查看>>
什么是Scrum
查看>>
nginx负载均衡的5种策略
查看>>
90%人都不知道:SVN 和 Git 的一些误解和真相
查看>>