Как клонировать Объект, не зная точного типа в Java? - PullRequest
0 голосов
/ 27 мая 2018
public void test(Object obj){`
      Object newObj = obj;//reference

}

Не зная точного типа объекта obj, как я могу клонировать его, например, как Object newObj = obj.clone(); или Object newObj = new Object(obj);

Фактическая ситуация такова: в классе Message я задаюэлемент HashMap<String,Object> позволяет любому, кто хочет использовать Message, добавлять другие свойства / элементы вместо того, чтобы переписывать его.Объект может быть ArrarList<Integer>.Здесь возникает проблема.

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Просто: вы не можете этого сделать.

Если вы не знаете, что все объекты, которые вы когда-либо будете обрабатывать / встречать, будут следовать определенным правилам, например, они разрешают сериализацию.

0 голосов
/ 27 мая 2018

Безопасный способ - сериализовать объект, а затем десериализовать.Это гарантирует, что все является новой ссылкой.Вам нужно будет реализовать интерфейс Serializable.

Класс Google Commons org.apache.commons.lang.SerializationUtils предоставляет это для вас следующим способом:

SerializationUtils.clone(Object);

Пример:

this.myObjectCloned = SerializationUtils.clone(this.object);
...