java 大神看过来 关于反射的问题

发布于 2021-11-26 19:17:59 字数 1888 浏览 906 评论 6

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

import java.lang.reflect.Field;

/**
 *
 * @author Administrator
 */
public class Test {

     private int s;

    public int getS() {
        return s;
    }

    public void setS(int s) {
        this.s = s;
    }

 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        Test t=new Test();
        t.s=12;
        Class<?> c=(Class)t.getClass();
        Field []f=c.getDeclaredFields();
        for(int i=0;i<f.length;i++){
            f[i].setAccessible(true);
            f[i].setInt(c,1);
            System.out.println(t.s);
        }
            
        
        System.out.println("hello world");
        
        
        // TODO code application logic here
    }
    
}



抛出了异常

Exception in thread "main" java.lang.IllegalArgumentException: Can not set int field test.Test.s to java.lang.Class
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
at sun.reflect.UnsafeIntegerFieldAccessorImpl.setInt(UnsafeIntegerFieldAccessorImpl.java:128)
at java.lang.reflect.Field.setInt(Field.java:943)
at test.Test.main(Test.java:37)
C:UsersAdministratorAppDataLocalNetBeansCache8.1executor-snippetsrun.xml:53: Java returned: 1
构建失败 (总时间: 0 秒)

 求大神指导。。。。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

策马西风 2021-12-02 06:38:59

我知道啊,但是抛异常啦,找不到原因

白龙吟 2021-12-02 06:22:42

c对象有 s属性 但c对象没有s属性 你这是往class对象中赋值阿

蓝颜夕 2021-12-02 05:09:01

f.setInt(t,1) 通过反射给对象t赋值

陌若浮生 2021-12-02 05:01:21

f.

毁梦 2021-12-02 04:24:07

楼主视力不好,

 f[i].setInt(t,1);

不是

 f[i].setInt(c,1);

冬天旳寂寞 2021-12-02 03:11:44

参数不对,f[i].setInt(c,1);     应该是 f[i].setInt(t,1);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文