mirror of
https://github.com/magefree/mage.git
synced 2025-12-26 05:22:02 -08:00
#6256: Fixed Watcher copy method for JDK11
This commit is contained in:
parent
35f19838dd
commit
76c9d38f57
2 changed files with 73 additions and 5 deletions
|
|
@ -5,7 +5,6 @@ import mage.constants.WatcherScope;
|
|||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import org.apache.log4j.Logger;
|
||||
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.*;
|
||||
|
|
@ -113,16 +112,16 @@ public abstract class Watcher implements Serializable {
|
|||
|
||||
field.setAccessible(true);
|
||||
if (field.getType() == Set.class) {
|
||||
((Set) field.get(watcher)).clear();
|
||||
field.set(watcher, new HashSet<>());
|
||||
((Set) field.get(watcher)).addAll((Set) field.get(this));
|
||||
} else if (field.getType() == Map.class) {
|
||||
Map target = ((Map) field.get(watcher));
|
||||
target.clear();
|
||||
HashMap<Object, Object> target = new HashMap<>();
|
||||
field.set(watcher, target);
|
||||
Map source = (Map) field.get(this);
|
||||
|
||||
ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType();
|
||||
Type valueType = parameterizedType.getActualTypeArguments()[1];
|
||||
if (valueType instanceof ParameterizedTypeImpl && ((ParameterizedTypeImpl) valueType).getRawType().getSimpleName().contains("Set")) {
|
||||
if (valueType.getClass().getSimpleName().contains("Set")) {
|
||||
source.entrySet().forEach(kv -> {
|
||||
Object key = ((Map.Entry) kv).getKey();
|
||||
Set value = (Set) ((Map.Entry) kv).getValue();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue