현재 두 개의 클래스가 동일한 패키지에있는 인 API로 작업하고 있습니다. 하나의 클래스에서 둘 다 사용하고자 할 때, 두 경우 모두에서 너무 긴 패키지 중 하나에 대해 절대 패키지 경로를 지정해야합니다. 긴 절대 경로를 사용하지 않고 두 클래스를 사용하는 다른 방법이 있습니까? 예를 들어 import 문에 대한 별칭을 사용하면 다음과 같이 사용할 수 있습니다. alias.className.Java의 모호한 클래스 이름
2
A
답변
4
순수 Java가 아니고 아니요. 다른 언어를 사용하면 그렇게 할 수 있지만 Java를 사용하면 하나를 가져 와서 다른 클래스의 정규화 된 이름을 사용하면됩니다.
+1
특히 Groovy는 근본적으로 동적 유형의 Java 버전이며 거의 동일한 구문을 사용하므로 형식 별칭을 지원합니다. – chrylis
0
당신은 수입이 같은 이름을 가진 클래스와 그들에게 자격이를 사용할 수 없으며, 자바 그러한 앨리어싱 메커니즘이 없습니다.
클래스 중 하나를 정규화 된 이름으로 참조하고 다른 클래스 만 가져와야합니다.
고객님의 경우에는 패키지 이름이 더 길고 다른 패키지 이름은이고 다른 이름은 정규화 된 이름으로 사용하십시오.
1
방금 같은 문제가 다시 발생하여 별칭처럼 작동하는 간단한 래퍼에 클래스를 래핑하면 쉽게 해결할 수 있습니다.
public class AbstractAlias<T> {
private final T o;
public AbstractAlias(T o) { this.o = o; }
public T get() { return o; }
@Override public boolean equals(Object obj) { return o.equals(obj); }
@Override public int hashCode() { return o.hashCode(); }
}
예를 들어, 일반적인 구조 MyAlias
를 사용하여 콘크리트 "별칭"서브 클래스에게
public class MyAlias extends AbstractAlias<long.class.path.ClassName> {
public MyAlias(long.class.path.ClassName o) {
super(o);
}
}
만들기 Map
public void Map<String,MyAlias> createMap() {
Map<String,MyAlias> map = new HashMap<>();
// ...
return map;
}
관련 문제
- 1. 모호한 유형 이름
- 2. Java의 정적 컨텍스트에서 모호한 호출
- 3. BigQuery의 모호한 열 이름
- 4. 오류 : 모호한 열 이름
- 5. 모호한 열 이름
- 6. 모호한 열 이름 'Doc_Date'
- 7. Agda : 모호한 이름 _ == _.
- 8. 모호한 열 이름 처리
- 9. 모호한 열 이름
- 10. Java의 Deobfuscate, jar 파일의 클래스 이름 변경
- 11. java의 유형 매개 변수 클래스 이름?
- 12. 모호한 클래스 상속
- 13. vb.net에서 모호한 클래스 멤버
- 14. 레일 - 모호한 열 이름 : ID
- 15. Transact-SQL 모호한 열 이름
- 16. 모호한 열 이름 오류 얻기
- 17. 모호한 SQL 이름의 열 이름
- 18. Excel에서 VBA가있는 모호한 하위 이름
- 19. 모호한 열 이름 : Sqlite의 DELETE
- 20. 모호한 삽입 클래스 이름이 오류가 아닙니다.
- 21. 모호한 클래스 멤버에 대한 액세스
- 22. 모호한 클래스 정의 오류 :: 해시
- 23. Java의 변수 파일 이름
- 24. 외부 코드가있는 Java의 클래스 클래스
- 25. Java의 클래스 및 추상 클래스
- 26. 루비 기계화는 전체 클래스 이름
- 27. 순서 절의 모호한 열 이름 오류
- 28. 모호한 열 이름 오류는 동안 절차
- 29. SQL SELECT 쿼리 : "모호한 열 이름"
- 30. 활성 레코드 선택 - 모호한 열 이름
이 API는 정말 좋지 않거나 정말 똑똑한 것 같습니다. 두 클래스를 모두 사용할 수 있다고 확신합니까? 그것은 의도적 일 것입니다. 어떤 도서관입니까? –
클래스 중 하나에서'static' 메소드를 호출하려면 클래스 자체를 가져 오지 않고이 메소드에'static import'를 사용할 수 있습니다 ... – Holger
to'@ QPaysTaxes' - appengine 캘린더 API (캘린더 포함) 서비스 및 캘린더 모델로 사용). 사실이 클래스 중 하나를 한 번만 사용해야합니다. 비슷한 상황을 피하기 위해 자바에서 우아한 언어의 특정 메커니즘이 있는지 궁금합니다. – matoni