из-за причин, по которым я пытаюсь скопировать / клонировать экземпляры объектов. И в случае с String я попробовал что-то вроде этого:
У меня есть такой объект, как
class Foo{
private String test;
//Getters && Setters are generated
}
и метод копирования, например:
private static Object copyMemberData(Object originalMemberData) {
if (originalMemberData == null) {
return null;
}
...
if (originalMemberData instanceof String) {
return String.valueOf(originalMemberData);
}
...
}
который используется как
PropertyDescriptor propDesc = new PropertyDescriptor("test", Foo.class);
//Get Data from original object
final Object originalMemberData = propDesc.getReadMethod().invoke(originalFoo);
final Object copiedMemberData = copyMemberData(originalMemberData);
А потом я попытался сравнить результат с System.identityHashCode
, чтобы убедиться, что я не работаю над ссылкой.
if (System.identityHashCode(copiedMemberData) == System.identityHashCode(originalMemberData)) {
throw new RuntimeException("Cloning is buggy!");
}
И я удивлен, что это действительно совпадает и выдает мне ошибку. Может быть, кто-то может объяснить мне причину этого.