이것이 가능한지 궁금합니다. Number
을 보유하는 클래스를 만들고 있는데이 숫자는 Float
또는 Integer.
일 수 있습니다. 그러나 런타임에 결정됩니다.자바 리플렉션/동적 유형 캐스팅을위한 일반 유형
Float 또는 Integer 중 하나를 취할 수있는 더 우아한 함수를 만들고 싶습니다. 수학 함수를 사용하고 있습니다. 변수 유형을 열거 형에 저장 했으므로 generics를 사용하여이를 수행 할 수 있기를 기대합니다. /반사.
은 여기 내 열거
public enum Type {
FLOAT,
INTEGER;
public final Class clazz;
Type() {
if (this.name().equals("FLOAT"))
clazz = Float.class;
else if (this.name().equals("INTEGER"))
clazz = Integer.class;
else
clazz = null;
}
}
그것은 내 수업 내부입니다. 우리는 자바 알고, 당신은 동적으로 type.clazz lhzType = (type.clazz) lhs
같은 캐스트를 입력 할 수 있지만이 작업이 완료 얻기 위해 적절한 제네릭을 사용하는 방법이 지금
private <T extends Number> T compareTo(Class<T> lhs, Class<T> rhs) {
// lhs > rhs return 1
// rhs < lhs return -1
// else return 0
}
: 여기
몇 가지 코드? 반사 문제가 생기면 오류로 던져 질 수 있기 때문에 거기에있는 것처럼 느껴집니다. 하지만 지금은 Java로 발전한 메가가 아닙니다.
(아이디어 것입니다 클래스 비교, 클래스의 개체를 비교 이해하지만 형식 비교)하지만 당신이 http://pastebin.com/By5Kb1KV를 사용하여 약간의 열거 형을 향상시킬 수있는 것 같다 – Pshemo
난 혼란스러워 - 왜'compareTo'걸릴거야'클래스'T' 대신's'입니까? –