>  Q&A  >  본문

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中文网2712일 전743

모든 응답(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
  • 취소회신하다