繁体   English   中英

Java中有没有类似.NET的NotImplementedException的东西?

[英]Is there anything like .NET's NotImplementedException in Java?

Java中有没有类似.NET的NotImplementedException的东西?

Commons Lang有它。 或者你可以抛出UnsupportedOperationException

我认为java.lang.UnsupportedOperationException是您正在寻找的。

你可以自己做(这就是我所做的)——为了不被异常处理所困扰,你只需扩展 RuntimeException,你的类可能看起来像这样:

public class NotImplementedException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public NotImplementedException(){}
}

您可以扩展它以接收消息 - 但如果您像我一样使用该方法(也就是说,作为提醒,还有一些事情要实现),那么通常不需要额外的消息。

我敢说,我只使用这种方法,而我在开发系统的过程中,让我更容易不忘记哪些方法仍然没有正确实现:)

如前所述,JDK 没有紧密的匹配。 但是,我的团队偶尔也会使用这种异常。 正如其他答案所建议的那样,我们本可以使用UnsupportedOperationException ,但我们更喜欢基础库中的自定义异常类,该类具有已弃用的构造函数:

public class NotYetImplementedException extends RuntimeException
{
    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException()
    {
    }

    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException(String message)
    {
        super(message);
    }
}

这种方法有以下好处:

  1. 当读者看到NotYetImplementedException时,他们知道某个实现是计划好的,要么被遗忘,要么仍在进行中,而UnsupportedOperationException表示(根据收集合同)某些东西永远不会实现。 这就是为什么我们在类名中有“yet”这个词。 此外,IDE 可以轻松列出调用站点。
  2. 通过每个调用站点的弃用警告,您的 IDE 和静态代码分析工具可以提醒您仍然需要在哪里实现某些东西。 (这种使用 deprecation 可能会让一些人觉得不对,但实际上deprecation 并不限于宣布删除。)
  3. 不推荐使用构造函数,而不是类。 这样,您只会在需要实现的方法内收到弃用警告,而不是在import行(不过,JDK 9 已修复此问题)。

不,不存在,它可能不存在,因为它的有效用途很少。 在使用它之前我会三思而后行。 此外,创建自己确实很容易。

请参阅此讨论,了解为什么它甚至在 .NET 中。

我猜UnsupportedOperationException接近了,虽然它没有说操作只是没有实现,但甚至不受支持。 这可能意味着没有有效的实现是可能的。 为什么不支持该操作? 它甚至应该在那里吗? 接口隔离或 Liskov 替换问题可能吗?

如果它正在进行中,我会选择ToBeImplementedException ,但我从来没有发现自己定义了一个具体的方法,然后将它搁置了很长时间,以至于它投入生产,并且需要这样的异常。

本着 Stackoverflow 结合 Reddit 和 Wikipedia的精神,这里有一些与问题相关的附加信息,也可以作为问题的答案。

当您要求 NetBeans IDE 创建缺少的实现时,它会使用UnsupportedOperationException

void setPropertiesWithReader(IDataReader rdr)
{
   throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}

如果它对 NetBeans 来说足够好,那么对我们来说也足够好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM