Java 玩家[]已从阵列更改为集合

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()]); 注意:我使用了随

我在IDE中得到了这个错误。错误显示在
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);
    // ...
}