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

标签 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。

感谢任何帮助:)

最佳答案

请检查此行

Main.getAuctionManager().registerAuction(this);

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

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

请分享registerAuction(),这可能会引发NPE

关于java - 当对象不为 null 时构造函数抛出 NPE [JAVA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58458302/

相关文章:

java - 从单独的类中打印 toString()

java - 什么是匹配特定索引处字符的正则表达式?

java - 什么时候可以捕获NullPointerException?

java - PDFBox - 如果设置为只读则不显示复选框

java - JNLP w/jdk1.7.0_51;应用被安全设置阻挡了

java - 如何使用 uriSMSURI 从收件箱中获取未读消息?

java - 先决条件库为 notNull 检查抛出 IllegalArgumentException

java - getExternalFilesDir(null) 抛出 NullPointerException

onClick 上的 Java/Android NullPointerException

java - 对同一类中方法的无参数调用产生 NullPointerException