ホームページ  >  に質問  >  本文

java反射获取类属性问题。

代码:

 public static List<Object> select(String sql, String o)
                throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
            Class c = Class.forName(o);
            Field[] fls = c.getDeclaredFields();
            List<String> list=  new ArrayList<>();
            for (int i = 0; i < fls.length; i++) {
                System.out.println("公有属性之" + fls[i].getName());
                list.add(fls[i].getName());
            }
            Object object = c.newInstance();
            List<Object> l = new ArrayList<>();
            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                // Retrieve by column name
                String id = rs.getString("href");
               String name = rs.getString("title");      
            // Display values
            System.out.print("ID: " + id);
            System.out.print(", name: " + name);
        }
        rs.close();
        stmt.close();
        conn.close();
        return l;

    }

我想获取传进来的类的所有属性,然后通过re.getString获得值,但是我不知道属性有多少个,在rs.next里for循环遍历的话就会失去rs的作用域。麻烦哪位大神帮我看看怎么写 = =。

PHP中文网PHP中文网2766日前801

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-04-18 10:30:16

    写植はあまり得意ではないので、読むだけで大丈夫です。

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:30:16

    実際、リフレクションには問題があります。
    クラス オブジェクトを取得したい場合でも、実際に外部クラスを動的にロードする必要がない限り、Class.formName を渡さないことをお勧めします。

    このように書くとあなたの要件を満たすかどうかわかりません

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:30:16

    org.springframework.jdbc.core.BeanPropertyRowMapper 既製の実装なので、参照して模倣することができます。

    返事
    0
  • キャンセル返事