我想循环访问类的字段,例如 Class.getDeclaredFields() 但现在我想检查一个字段是否是 HashMap,如果是,则应该删除 它的一值(value)。 我怎样才能达到这个目标? 我一无所知,但正在努力
这是我到目前为止的代码:(它使用了 Spigot API)
@EventHandler
public void onInvClose(InventoryCloseEvent e) {
Player p = (Player) e.getPlayer();
List<RegisteredListener> listeners = HandlerList.getRegisteredListeners(Core.core);
for(RegisteredListener l : listeners) {
Field[] fields = l.getClass().getDeclaredFields();
for(Field field : fields) {
// Check if field is a HashMap
if(field.getType().isAssignableFrom( HashMap.class )) {
// Remove Player p from field
}
}
}
}
最佳答案
var map = (Map<Player, YourValueObject>)field.get(l);
应该可以工作,然后只需用 p 键删除即可。
虽然我现在无法在手机上尝试。
关于java - 将字段转换为 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309373/