我发现有 2 个 NotImplementedException:
- sun.reflect.generics.reflectiveObjects.NotImplementedException
- org.apache.commons.lang3.NotImplementedException
由于第一个没有可用的文档,我无法理解它们之间的区别。这有什么区别?其中一个比另一个更好吗?
我发现有 2 个 NotImplementedException:
由于第一个没有可用的文档,我无法理解它们之间的区别。这有什么区别?其中一个比另一个更好吗?
我发现有2个
NotImplementedException
我发现了比这更多的例子。这取决于你看起来有多努力......以及在哪里。
由于第一个没有可用的文档...
那是因为sun.reflect.generics.reflectiveObjects.NotImplementedException
是一个内部类。源代码说:
“用于指示缺少功能的临时类”
这有什么区别?
它们都或多或少的意思相同。某些功能尚未实现。
其中一个比另一个更好吗?
我假设您真的在问是否可以并且应该在代码中重用这些异常中的任何一个。
由于sun.reflect...
异常是一个内部类(请参阅@GhostCat 的答案),因此不建议在您的代码中使用它。该类有可能在 Java 1的未来版本中“消失” 。这会给您的代码库带来问题。
org.apache.commons...
重用异常是合理的。事实上,我对 javadoc 的阅读,它被设计为通常可重用。然而:
org.apache.commons.lang
和org.apache.commons.lang3
. (见第 1 点!)其他选择是声明您自己的自定义异常,或者简单地使用现有的java.lang.UnsupportedOperationException
... 这是标准的,不会添加新的依赖项,并且不会在未来的 Java 版本中删除。
1. 我不确定这一点,但我认为sun.reflect.generics.reflectiveObjects
Java 9 中阻止了访问。
这很简单:任何存在于从sun...开始的包中的东西(几乎总是)可以安全忽略(有一些罕见的例外,例如sun.misc.Unsafe)
换句话说:这些仍然随 JDK/JRE 一起提供的包并不打算供公众使用。即使它们提供了一些有用的东西——你最好寻找“真正公开的”替代品。这些类的主要目的是帮助实现 JVM 的“内部”。它们完全不受您的控制,随着时间的推移,它们几乎没有任何“保证”。
从这个意义上说,答案是:太阳异常是您根本不应该使用的异常;而 apache commons可能是一个不错的候选者。公共类的全部意义在于“公开”使用。
我可以用这个来回答。com.your.package.NotImplementedException
和 和有什么不一样
org.apache.commons.lang3.NotImplementedException
?
这sun.reflect.generics.reflectiveObjects.NotImplementedException
是JDK
内部 API,不用于用户代码。