HashMap에서 키로 사용할 고유 한 메서드 식별자를 가져와야합니다.고유 한 메소드 식별자를 얻는 방법?
stacktrace 및 리플렉션 및 사용자에게 메소드 서명을 사용하여 작업을 수행하려고합니다. 그러나 문제는 메서드 오버로드를 피하기 위해 전체 메서드 시그니처를 검색하는 방법을 찾지 못했기 때문입니다.
public class Class1 {
HashMap<String, Object> hm;
public Class1() {
hm = new HashMap<String, Object>();
}
public Object method() {
if (!containsKey()) {
Object value;
...
put(value);
}
return get();
}
public Object method(String arg1) {
if (!containsKey()) {
Object value;
...
put(value);
}
return get();
}
public Boolean containsKey() {
if (hm.containsKey(Util.getUniqueID(2)) {
return true;
} else {
return false;
}
}
public void put(Object value) {
hm.put(Util.getUniqueID(2), value);
}
public Object get() {
String key = Util.getUniqueID(2);
if (hm.containsKey(key) {
return hm.get(key);
} else {
return null;
}
}
}
class Util {
public static String getUniqueID(Integer depth) {
StackTraceElement element = Thread.currentThread().getStackTrace()[depth];
return element.getClassName() + ":" + element.getMethodName();
}
}
을 그러나 문제는이 전략으로, 동일한 ID를해야합니다, 두 가지 방법입니다 :
편집
는이 작품처럼 그 somethink을하고 싶습니다.
어떻게 해결할 수 있습니까?
사용자 ID에 인수 유형을 추가하십시오. – Simulant
나는 일종의 싱글 톤이 필요하다. – GarouDan