java中的映射Field,如果有个实例field里面只有一个非静态啊字段,用get()获得的时候,为什么要传参数?

 我来答
heptnaol
2014-10-30 · TA获得超过7260个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1757万
展开全部
如果是静态变量,即类变量
需要field.get(这里传Class实例)
如果是对象变量
需要field.get(这里传对象)
这个参数是必须的,否则get无法确定你要从哪儿获取这个field的值

例子:

Field field = Integer.class.getDeclaredField("MAX_VALUE");//静态变量
System.out.println(field.get(Integer.class));//输出2147483647 即Integer.MAX_VALUE

Integer i = new Integer(100);
field = Integer.class.getDeclaredField("value");//非静态
field.setAccessible(true);
field.get(i);//这里必须用对象
System.out.println(field.get(i));//输出100
更多追问追答
追问
恩。你说的我明白了。可是我有几个疑问
1:如果是静态变量,get()方法就传一个null就可以了吧?
2:Field的对象实例是从某个Class类对象的getDeclaredField()方法获得的,就是说, 这个fidld实例只绑定字段,而不知道是哪个类实例的,对吧?
追答
1.不能传null,空对象的成员是不可能有值的,要么是类的,要么是对象的。如果是类的,需要传代表这个类的类对象,就是class Class。
kiryuukazuma12
2014-10-30 · TA获得超过220个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:121万
展开全部
因为有参数和没参数调用的java反射API都是同一个啊,没参数你给个null就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式