Мне нужно получить уникальный идентификатор метода для использования в качестве ключа на HashMap.Как получить уникальный идентификатор метода?
Я пытаюсь сделать что-то с помощью stacktrace и reflection, а пользователь - подписи метода. Но проблема в том, что я не нашел способ получить полную подпись метода (чтобы избежать перегрузки методов).
Edited
Я хотел бы, что somethink, как это работает:
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();
}
}
Но проблема в том, что два метода, с этой стратегией, будет иметь тот же идентификатор.
Как я могу работать?
Добавьте типы аргументов в свой идентификатор. – Simulant
Мне нужен один синглтон. – GarouDan