데이터베이스 테이블의 모든 열을 특성 (멤버 변수) 및 해당 getter 및 setter로 포함하는 Java 클래스가 있습니다.자바 클래스에서 속성 수를 얻는 방법은 무엇입니까?
이 클래스에서 열 수 (즉, 클래스의 속성 수)를 반환하는 getColumnCount()
이라는 메서드를 갖고 싶습니다. 번호를 하드 코드하지 않고 어떻게 구현할 수 있습니까? 나는 이것에 대한 비평에 일반적이고 제안한다. 감사.
데이터베이스 테이블의 모든 열을 특성 (멤버 변수) 및 해당 getter 및 setter로 포함하는 Java 클래스가 있습니다.자바 클래스에서 속성 수를 얻는 방법은 무엇입니까?
이 클래스에서 열 수 (즉, 클래스의 속성 수)를 반환하는 getColumnCount()
이라는 메서드를 갖고 싶습니다. 번호를 하드 코드하지 않고 어떻게 구현할 수 있습니까? 나는 이것에 대한 비평에 일반적이고 제안한다. 감사.
reflection API을 확인하십시오. 문제의 클래스가 실제로 순수 자바 빈즈 경우 (당신이 그것을 부르는 속성 또는 열) 다음과 같이 필드의 수를 얻을 수 있습니다 :
public int getColumnCount() {
return getClass().getDeclaredFields().length;
}
나는 그러나 높은이의 필요성에 의문을 제기. 이 접근법/해결책이 필요하다고 생각되는 기능적 요구 사항에 대해 좀 더 자세히 설명하면 더 나은 방법을 제안 할 수 있습니다.
리플렉션을 사용하여 클래스의 메소드를 나열하고 이름이 정규 표현식 "^set.+$
"과 일치하는 메소드를 계산합니다.
"DatabaseColumn"과 같은 주석을 만들고, 어떤 필드를 테이블 열에 매핑할지 사용하십시오. 필드 나 getter 메소드에 주석을 사용할 수 있습니다. 데이터베이스 테이블에서 사용되지 않는 임시 필드는 안전합니다.
// in this sample annotation used for getter methods
public int getColumnCount() {
int count = 0;
Method[] methods = getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(DatabaseColumn.class)) {
count++;
}
}
return count;
}
리플렉션을 사용하면 그럴 수 있습니다.하지만 왜 그 번호를 알아야합니까? 나는 당신이하려는 일을하는 더 좋은 방법이있을 수 있다고 생각합니다. – Syntactic