Java 玩家[]已从阵列更改为集合
我在IDE中得到了这个错误。错误显示在Java 玩家[]已从阵列更改为集合,java,java-7,bukkit,Java,Java 7,Bukkit,我在IDE中得到了这个错误。错误显示在Bukkit.getOnlinePlayer()下。: 必填项:org.bukkit.entity.Player[] 发现:java.util.Collection错误表明您使用了错误的数据类型(一个Collection实例)。你应该把你的玩家集合转换成阵型 您可以这样做: Player[] players = playersCollection.toArray(new Player[playersCollection.size()]); 注意:我使用了随
Bukkit.getOnlinePlayer()下。
:
必填项:org.bukkit.entity.Player[]
发现:java.util.Collection错误表明您使用了错误的数据类型(一个Collection
实例)。你应该把你的玩家集合转换成阵型
您可以这样做:
Player[] players = playersCollection.toArray(new Player[playersCollection.size()]);
注意:我使用了随机变量名。根据变量调整名称。插口实现覆盖Bukkit实现:
因此,getOnlinePlayer()
返回CollectionWellcome。我发布了一个答案,但下一次,请附加抛出的异常的完整堆栈跟踪。@James没有堆栈跟踪。错误消息是IDE警告。啊,好的。如果启动此代码,可能会出现异常。即使使用变量,我也无法强制编译器使用该方法的集合版本。我正在使用Eclipse构建针对spigot1.8-R0.1的系统。
public List<Player> getTargetV3(Arena arena, Player player, int maxRange, double aiming, boolean wallHack) {
ArrayList target = new ArrayList();
Location playerEyes = player.getEyeLocation();
Vector direction = playerEyes.getDirection().normalize();
ArrayList targets = new ArrayList();
Player[] lx;
int testLoc = (lx = Bukkit.getOnlinePlayers()).length;
for(int loc = 0; loc < testLoc; ++loc) {
Player block = lx[loc];
if(block != player && block.getLocation().distanceSquared(playerEyes) < (double)(maxRange * maxRange)) {
targets.add(block);
}
}}
Player[] players = playersCollection.toArray(new Player[playersCollection.size()]);
Collection<? extends Player> lx = Bukkit.getOnlinePlayers();
int testLoc = lx.size();
for (int loc = 0; loc < testLoc; ++loc) {
Player block = lx.get(loc);
// ...
}