如果使用Sun的专有Java类,编译器将显示警告.我认为使用这些类通常是一个坏主意.我在某处读到了这个.但是,除了警告之外,还有任何根本原因,你不应该使用它们吗?
dfa*_*dfa 54
因为它们是内部API:它们可能以未记录或不受支持的方式进行更改,并且它们绑定到特定的JRE/JDK(在您的情况下为Sun),从而限制了程序的可移植性.
尽量避免使用此类API,总是更喜欢公开记录和指定的类.
Pow*_*ord 22
在JDK 6文档包括标题的链接注意关于sun.*包.这是来自Java 1.2文档的文档,因此引用sun.*应该被视为他们所说的com.sun.*
最重要的一点是:
Sun公司包括了Java 2 SDK,标准版的类,分为包组
java.*,javax.*,org.*和sun.*.除了sun.*包之外的所有包都是Java平台的标准部分,并且将来会得到支持.通常,诸如sun.*Java平台之外的软件包可以在OS平台(Solaris,Windows,Linux,Macintosh等)上有所不同,并且可以随时更改,而无需通知SDK版本(1.2,1.2.1) ,1.2.3等).包含对sun.*包的直接调用的程序不是100%纯Java.
和
实现Java平台的每家公司都将以自己的私有方式实现.这些类
sun.*存在于SDK中以支持Java平台的Sun实现:这些sun.*类使Java平台类在Sun Java 2 SDK的"幕后"工作.这些类通常不会出现在另一个供应商的Java平台上.如果您的Java程序按名称请求类"sun.package.Foo",它可能会因ClassNotFoundError而失败,并且您将失去使用Java开发的主要优势.
尝试使用非Sun JVM运行代码,看看会发生什么......
(您的代码将因ClassNotFound异常而失败)
是的,因为没有人保证这些类或API与下一个Java版本相同,我敢打赌,不能保证这些类在其他供应商的Java版本中可用.
因此,您将代码耦合到特殊的Java版本,并且至少可以放松.