2013-03-14 3 views
1

엔티티를리스트를 통해 저장하는 테이블 모델을 만들고 싶습니다. 이것 같이; AbstractTableModel에있어서 해 getValueAt (INT 행, 열 INT)을 연장 엔티티 표 모델 자바 엔티티 테이블 모델

List list = new ArrayList<Entity>(); 
list.add(entity); 
tableModel.setEntityVector(list); 

는 행과 열의 값에 따라 엔티티 필드의 값을 반환한다. 행은 목록의 엔티티 번호를 나타내며 열은 엔티티 개체의 필드 번호를 나타냅니다. 하지만 문제는 내가 다음 코드를 사용할 때이다.

Entity entity = list.get(rowCount - 1); 
Field[] fields = entity.getClass().getDeclaredFields(); 

엔터티 필드는 개인 필드 여야하므로 개체의 필드에 도달 할 수 없습니다. getDeclaredFields() 메서드 대신 getDeclaredMethods()를 사용했다면 원하는 메서드에 도달하지 못했습니다. 왜냐하면 생성자, 설정자가 있기 때문에 열 매개 변수를 사용하기 때문입니다 ...

내 질문은; AbstractTableModel의 getValueAt (int 행, int 열) 메서드의 열 매개 변수를 사용하여 엔티티의 필드 값에 어떻게 도달 할 수 있습니까?

+0

시도해 보셨습니까? 그것을위한 약간의 코드를 썼다? –

+0

네 개인 필드에 도달 할 수 없다는 예외를 던졌습니다. – MOD

+0

그 개인 필드 변수의 이름을 알고 있으면 개인 필드에 접근 할 수 있습니다. –

답변

2

getDeclaredFields()를 사용하여 클래스의 모든 개인 필드에 액세스 할 수 있습니다. 아래 코드를 참조하십시오.

import java.lang.reflect.Field; 
import java.util.ArrayList; 

class Private { 
    private int i = 20; 
    public String s = "java"; 
    private String name = "Object"; 
    private ArrayList<String> list = new ArrayList<String>() 
    { 
     { 
      add("Hello");add("World"); 
     } 
    }; 
} 
public class Tester 
{ 
    public static void main(String[] st)throws Exception 
    { 
     Private p = new Private(); 
     Field[] fs = p.getClass().getDeclaredFields(); 
     for (Field f : fs) 
     { 
      f.setAccessible(true); 
      System.out.println(f.get(p)); 
     } 
    } 
}