构造函数在对象不为null时抛出NPE [JAVA]

时间:2019-10-18 21:16:28

标签: java nullpointerexception

方法:

    public Auction getAuction(UUID id) {
        System.out.println("count: " + auctions.size());
        if (!doesAuctionExist(id))
            return null;
        UUID owner = UUID.fromString(Main.getAuctionsFile().getConfiguration().getString("auctions."+id.toString()+".owner"));
        Bukkit.getPlayer("NoneTaken").sendMessage("owner "+owner);
        long price = Main.getAuctionsFile().getConfiguration().getLong("auctions." + id.toString() + ".price");
        boolean useTokens = Main.getAuctionsFile().getConfiguration().getBoolean("auctions." + id.toString() + ".useTokens");
        long timeCreated = Main.getAuctionsFile().getConfiguration().getLong("auctions." + id.toString() + ".timeCreated");
        ItemStack item = (ItemStack) Main.getAuctionsFile().getConfiguration().get("auctions." + id.toString() + ".item");
        Bukkit.getPlayer("NoneTaken").sendMessage("null: " + (owner == null));
        return new Auction(
                owner,
                item,
                price,
                useTokens,
                id,
                timeCreated);
    }

构造函数:

    public Auction(UUID owner, ItemStack item, long price, boolean useTokens, UUID identifier, long timeCreated) {
        this.owner = owner;
        this.item = item;
        this.price = price;
        this.useTokens = useTokens;
        this.identifier = identifier;
        this.timeCreated = timeCreated;
        Main.getAuctionManager().registerAuction(this);
    }

错误:

18.10 17:12:12 [Server] ERROR Error occurred while enabling BanditAH v1.0 (Is it up to date?)
18.10 17:12:12 [Server] INFO java.lang.NullPointerException
18.10 17:12:12 [Server] INFO at me.nonetaken.banditah.managers.Auction.<init>(Auction.java:28) ~[?:?]
18.10 17:12:12 [Server] INFO at me.nonetaken.banditah.managers.AuctionManager.getAuction(AuctionManager.java:86) ~[?:?]
18.10 17:12:12 [Server] INFO at me.nonetaken.banditah.managers.AuctionManager.<init>(AuctionManager.java:28) ~[?:?]

AuctionManager.java中的第86行是第一段代码中构造函数中的owner,行。 发送“ null:true / false”的消息始终返回false,因此该对象不能为null,但是在该行中的错误中引发了NPE。

我们将不胜感激:)

2 个答案:

答案 0 :(得分:0)

请检查此行

   Name  StudentID    Education
0   tom          3      college
1  nick          5  grad-school
2  juli          6  grad-school
3  jack         10          NaN

Main.getAuctionManager()是静态方法吗?如果不是,则getAuctionManager()的Main或返回值可能为null

如果是,则getAuctionManager()的返回值可能为空

请共享registerAuction(),它可能会抛出NPE

答案 1 :(得分:0)

发现了问题。

结果发现调用registerAuction()的构造函数是问题所在。然后,它调用saveAuction(),该文件覆盖了试图读取拍卖内容的位置中的文件。谢谢你Ajinkyad。