从哈希图中检索实例化对象
retrieve instantiated objects from hashmap
我真的不想求助于问,但我已经走到了死胡同。我正在尝试将存储在哈希图中的对象数组构建到单个数组中。我正在构建一个 minecraft 插件,我需要能够这样做才能将所有玩家重置为自然状态。但是,无论出于何种原因,我似乎无法真正将 Spectator[] 数组解析为单独的部分。
目标只是让超过 1 人观看。这是我的代码:
public class EagleEye extends JavaPlugin implements Listener{
public HashMap<Spectatee, Spectator[]> spec = new HashMap(Spectatee, Spectator[]);
public HashMap<Spectatee, Spectator[]> orinven = new HashMap<Spectatee, Spectator[]>;
public HashMap<Spectatee, Spectator[]> eeinven = new HashMap<Spectatee, Spectator[]>;
@Override
public void onEnable()
{
//TODO:Who knows.
}
@Override
public void onDisable()
{
//TODO:Spec off any players being spectated and spectating.
Spectator[] frickinhell = spec.get(key));
//Creates a master list of all spectators by uuid
for(Spectator spec : spec.get(Spectator.class))
{
master.add(spec);
}
for(Object spec : master.toArray())
{
//Verify the player is online
if(Bukkit.getPlayer(master)
{
//Verify the player is still spectating
if(tators.get(uuid) == true)
{
//Stop spectating
tators.put(uuid, false);
}
}
}
}
我知道这段代码有很多问题。但是,我主要关心的是将存储在 hashmap 中的所有 Spectators[] 实例中存储的 Spectator[] 并将它们的值重置为默认值。一旦我可以访问每个对象本身的每个实例,我就可以使用设置器重置它们各自的值。
干杯。
在 spec.get(Spectator.class)
中,Spectator.class
与您的密钥类型不匹配,即 Spectatee
。因此,returns null.
如果您想有机会获得非空值,您应该将 Spectatee
的实例传递给 spec.get()
。
如果你想收集所有观众而不考虑他们的键,你可以迭代地图的值:
for (Spectator[] value : spec.values())
for(Spectator spec : value)
{
master.add(spec);
}
我真的不想求助于问,但我已经走到了死胡同。我正在尝试将存储在哈希图中的对象数组构建到单个数组中。我正在构建一个 minecraft 插件,我需要能够这样做才能将所有玩家重置为自然状态。但是,无论出于何种原因,我似乎无法真正将 Spectator[] 数组解析为单独的部分。
目标只是让超过 1 人观看。这是我的代码:
public class EagleEye extends JavaPlugin implements Listener{
public HashMap<Spectatee, Spectator[]> spec = new HashMap(Spectatee, Spectator[]);
public HashMap<Spectatee, Spectator[]> orinven = new HashMap<Spectatee, Spectator[]>;
public HashMap<Spectatee, Spectator[]> eeinven = new HashMap<Spectatee, Spectator[]>;
@Override
public void onEnable()
{
//TODO:Who knows.
}
@Override
public void onDisable()
{
//TODO:Spec off any players being spectated and spectating.
Spectator[] frickinhell = spec.get(key));
//Creates a master list of all spectators by uuid
for(Spectator spec : spec.get(Spectator.class))
{
master.add(spec);
}
for(Object spec : master.toArray())
{
//Verify the player is online
if(Bukkit.getPlayer(master)
{
//Verify the player is still spectating
if(tators.get(uuid) == true)
{
//Stop spectating
tators.put(uuid, false);
}
}
}
}
我知道这段代码有很多问题。但是,我主要关心的是将存储在 hashmap 中的所有 Spectators[] 实例中存储的 Spectator[] 并将它们的值重置为默认值。一旦我可以访问每个对象本身的每个实例,我就可以使用设置器重置它们各自的值。
干杯。
在 spec.get(Spectator.class)
中,Spectator.class
与您的密钥类型不匹配,即 Spectatee
。因此,returns null.
如果您想有机会获得非空值,您应该将 Spectatee
的实例传递给 spec.get()
。
如果你想收集所有观众而不考虑他们的键,你可以迭代地图的值:
for (Spectator[] value : spec.values())
for(Spectator spec : value)
{
master.add(spec);
}