기본적으로 마우스 클릭이 다양한 유형의 사각형 목록 (G3_gRect의 모든 하위 항목) 중 하나에 속하는지 여부를 찾기 위해 일반 검색 기능을 구현하려고합니다. 아무 것도 발견되지 않으면, 그것은 유형이 T 인 새 오브젝트를 유효하지 않은 것으로 정의하는 특성으로 리턴해야합니다 (다른 오브젝트와는 달리).새 제한 유형 매개 변수 만들기
제네릭 형식 T를 반환 할 때까지이 모든 내용이 제대로 작동합니다. 이 작업을 수행하려면 어떻게해야합니까?
T 형식의 새 개체를 초기화 할 때 마지막 줄이 끊어집니다. 항상 해당 형식을 초기화 할 수 있는지 여부를 모르기 때문에 가정합니다.
private <T extends G3_gRect> T whatRect(MouseEvent e, List<List<T>> maps) {
while (!maps.isEmpty()) {
List<T> map = maps.remove(0);
for (T entry : map) {
if(entry.R.contains(e.getPoint())) return entry;
}
}
return new T(G2_gObj.ObjType.NONE); //return with empty object rather than null.
}
관련 클래스의 관련 부분의 몇
:public abstract class G2_gObj {
public enum ObjType {
FUNCTION, RIBBON, D_LINE, D_START, D_END, D_IN_AREA, C_IN_AREA, M_IN_AREA, D_OUT_AREA, M_OUT_AREA, NONE, C_OUT_AREA
}
public ObjType t;
public G2_gObj(ObjType t) {
this.t = t;
}
}
public class G3_gRect extends G2_gObj{
public G3_gRect(ObjType t) {
super(t);
}
}
public class G4_gFunct extends G3_gRect{
public G4_gFunct(ObjType t) {
super(t);
}
}
public class G4_gDPoint extends G3_gRect{
public G4_gFunct(ObjType t) {
super(t);
}
}
지금 내 해결 방법은 아무 것도 발견되지 않으면 반환이 방법으로 T 타입의 객체에 전달하는 것입니다
. 괜찮습니다.하지만 실제로이 작업을 수행하는 더 좋은 방법이 있다고 상상합니다.감사합니다.