首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Sun专有的Java类是不好的做法?

使用Sun专有的Java类是不好的做法,因为这样会导致代码的不可移植性和兼容性问题。Java设计之初就是为了保证跨平台的兼容性和可移植性,因此在编写Java代码时,应该尽量避免使用特定于某个实现的类或API。

如果需要使用特定的Java类或API,应该尽量使用Java标准库中的类和API,或者使用开源库和框架,这样可以确保代码的可移植性和兼容性。此外,如果需要使用特定于某个实现的Java类或API,应该使用反射或动态加载的方式来加载这些类或API,以确保代码的可移植性和兼容性。

总之,使用Sun专有的Java类是不好的做法,应该尽量避免使用特定于某个实现的类或API,以确保代码的可移植性和兼容性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java项目中使用最多排名前100,你用最多哪些

从事Java软件开发工作很大程度要利用各种类库api,有组织曾经从10000个开放源码Java项目中,统计API使用频率;下面的列表显示了前100名。...网络配图 下面前100名列表(括号中数字使用频率,范围从1 - 10000) java.util.ArrayList (6958) java.io.IOException (6866) java.util.List...java.util.Set (3915) java.util.Arrays (3884) java.util.Iterator (3856) java.util.Collections (3643) java.util.Date...(1005) java.util.concurrent.ConcurrentHashMap (1001) java.awt.event.ActionEvent (995) 一个使用频率反映了它受欢迎程度和重要性...,一个Java开发人员,开始学习最有效方法就是利用API,这是大多数开发人员看法,而且从使用频率上可以反映Java开发趋势,比如在这前100名中,我们可以看出Android开发是非常受欢迎

1K60

JDK17中密封sealed和permits使用指南:什么Javasealed和permits?

Javasealed和permits使用指南 摘要 在现代软件开发多样化领域中,Java作为一种广泛使用编程语言,持续不断地演进和创新。...无论你刚刚开始接触Java新手,还是寻求进阶知识资深开发者,本文都将为你提供有价值见解和指导。‍‍ 正文 什么sealed?...关键字与sealed紧密结合另一特性。...通过使用sealed和permits关键字,你可以确保只有预先定义好(如Circle和Square)能够继承Shape。...这样,我们可以确保图形库中形状类型受控。 小结 Sealed和permits关键字提供了一种强大方法来精确控制Java继承。

41810

Java这些冷知识你知道吗?

applejvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好jvm(s),整合成一个统一openjdk。...app做法,后来vc,delphi之类其实都是抄袭或者说借鉴applesmalltalk做法,jobs说微软从头到尾都在抄袭apple空穴来风,这里空穴来风跟王垠使用空穴来风一个意思,有趣...3)jee也是一个或者说是一堆标准,知乎上有些人把maven,jenkins都算做jee不对滴,jee标准核心ejb,其实就是一个xml配置化java文件,这个标准在4时候,达到了顶峰状态,几乎所有的挨踢大厂都主动支持该标准...8)maven上jars数量前两天突破800万,其他语言库,排名第二npm,大概数量maven十分之一,也就是几十万,不知道现在突破100万没有,然后gem,也就是ruby那个,大概十几万...10)微软也曾经jcp甚至java主要贡献者,但是利益驱使下,想扩展java,从而破坏java跨平台特性,所以跟sun闹翻,其本质原因就是想让客户写java代码跟windows绑定,sun坚决不同意

1.7K00

Java这些冷知识你知道吗?

applejvm等在内,都做得不行,所以jvm主要是整合淘汰掉这些做得不好jvm(s),整合成一个统一openjdk。...app做法,后来vc,delphi之类其实都是抄袭或者说借鉴applesmalltalk做法,jobs说微软从头到尾都在抄袭apple空穴来风,这里空穴来风跟王垠使用空穴来风一个意思,有趣...3)jee也是一个或者说是一堆标准,知乎上有些人把maven,jenkins都算做jee不对滴,jee标准核心ejb,其实就是一个xml配置化java文件,这个标准在4时候,达到了顶峰状态,几乎所有的挨踢大厂都主动支持该标准...8)maven上jars数量前两天突破800万,其他语言库,排名第二npm,大概数量maven十分之一,也就是几十万,不知道现在突破100万没有,然后gem,也就是ruby那个,大概十几万...10)微软也曾经jcp甚至java主要贡献者,但是利益驱使下,想扩展java,从而破坏java跨平台特性,所以跟sun闹翻,其本质原因就是想让客户写java代码跟windows绑定,sun坚决不同意

47930

java9迁移注意事项

迁移种类 1、代码不模块化,先迁移到jdk9上,好利用jdk9api 2、代码同时也模块化迁移 几点注意事项 不可读 比如sun.security.x509,在java9中归到java.base模块中...比如sun.misc.Unsafe,原本只想让oracle jdk team来使用,不过由于这些应用太广泛了,为了向后兼容,java9做了妥协,只是将这些归到了jdk.unsupported模块...requires java.base mandated opens sun.misc opens sun.reflect 删除 java9删除了sun.misc.BASE64Encoder,这种情况只能改用其他...使用services来实现optional依赖 services特别适合用来解耦调用方与实现依赖问题,如果接口有多种实现,调用方不必要requires所有的实现,只需要requires接口即可...上面的做法在原来module-info.java里头去做修改,另外一种在执行java或javac时候通过指定命令来修改原来关系。比如 java ...

1.3K10

jnaerator:JNA框架下向动态库传递Java Object(即动态库JNI方式访问java对象)

熟悉JNA童鞋都知道,通过JNA可以向动态库传递(或从动态库返回)com.sun.jna.Structure为基对象,在动态库一层,会把Structure解析为结构C语言struct或union...,jnaerator可以将C语言定义struct或union自动生成继承Structure java。...但有的时候,我们希望java层与动态库直接传递Java对象,动态库以JNI方式访问java层传递Java对象,或直接返回java对象给java层,JNA可以实现么?...如下com.sun.jna.Functioninvoke系列方法其中一个定义,其中options参数允许指定函数调用时一些特别要求: ?...这些特别要求中就有一个我们本次任务中要用到选项: com.sun.jna.Library.OPTION_ALLOW_OBJECTS 该选项个布尔值,为true时允许任何Java对象作为输入参数或返回值

1.1K20

【关关刷题日记60】Leetcode 437. Path Sum III

关关刷题日记60 – Leetcode 437. Path Sum III 题目 题目的意思给定一个二叉树,让我们找到路径节点和等于给定值路径个数。...这里路径不一定是从根节点到叶子节点,可以是其中一段,但是必须自上而下顺序。 思路 思路:这题目不好做,涉及到递归嵌套。...一棵树中满足路径节点和等于给定值路径个数,等于以这棵树根节点为路径源头满足要求个数,加上它左右子树中满足要求个数。...以这棵树根节点为路径源头满足要求个数做法,同关关刷题日记58 – Leetcode 112 Path Sum中做法一样,只不过不是到叶子节点,才判断节点值是否与sum值相等,而是路径中任一点都可以...以上就是关关关于这道题总结经验,希望大家能够理解,有什么问题可以在我们知公众号平台上交流或者加我们QQ知-人工智能交流群 426491390,也可以加入知——Leetcode刷题交流群(请先加微信小助手

75090

Java面试:2021.05.16(周末愉快!)

注意:在finally中改变返回值做法不好,因为如果存在finally代码块,try中return语句不会立马返回调用者,而是记录下返回值待finally代码块执行完毕之后再向调用者返回其值,然后如果在...这里复用代码方式应该是Has-A关系而不是Is-A关系,另一方面容器都属于工具,继承工具本身就是一个错误做法使用工具最好方式Has-A关系(关联)或Use-A关系(依赖)。...需要注意:子类一定是增加父能力而不是减少父能力,因为子类比父能力更多,把能力多对象当成能力少对象来用当然没有任何问题。) 接口隔离原则:接口要小而,绝不能大而全。...(通过继承来复用代码面向对象程序设计中被滥用得最多东西,因为所有的教科书都无一例外对继承进行了鼓吹从而误导了初学者,之间简单说有三种关系,Is-A关系、Has-A关系、Use-A关系,分别代表继承...,需要说明,即使在JavaAPI中也有不少滥用继承例子,例如Properties继承了Hashtable,Stack继承了Vector,这些继承明显就是错误,更好做法在Properties

41420

Java工程师必须要知道JVM命令行标志

System.gc();   明确垃圾收集一个很不好想法——就像把你和一条疯狂斗牛狗锁在一个电话亭里。...所有的清除比一个普通GC操作要花费数个数量级,这只是个简单数学问题。   ...除了Sun/Oracle之外,没有任何VM支持所有命令行标志。找出支持标志最佳方式就是尝试一下,看看它是否能正常工作。如果从技术上讲,这些标志不受支持,那么使用它们就完全由你负责。...不但要报告何时装入,还要报告从哪里装入,包括JAR路径(如果来自JAR)。   jni几乎不用,除非使用JNI或者本地库。...JVM命令行选项经常会更改,所以定期检查个好主意。   实际上,命令行标志并非用来永久使用。然而,如果使用命令行标志作为一种工具来研究完全不透明虚拟机内部工作,仍然很有用

31620

Java IAQ:很少被回答问题

但是要注意来自Sun警告“:你什么时候应该使用静态导入?一定要谨慎!”...下面一些针对Java1.5之前版本解决方案: Just Java作者Peter van der Linden在他FAQ中反对上述最后两种做法。...大多数情况下,我也认为Math m = null 一种糟糕做法,但我不认同MyStaticMethods 例子一种“为了使用可有可无缩写(不如直接用类别层级方式进行表示)而导致缺乏面向对象风格继承做法...我同意MyClass1继承MyStaticMethods这种做法会误导用户以为MyClass1继承了一些来自MyStaticMethods方法,并且我也赞同这样做会无法继承真正需要,这也是不好。...并且,如果你使用JIT编译器,那么生成代码也会产生一些额外字节。 在Sun JDK VM中,你也许会感到很吃惊,一个Object会占用16字节,或是4字大小。

59920

Javajps命令使用详解

jps命令简介 jps(Java Virtual Machine Process Status Tool)JDK提供一个可以列出正在运行Java虚拟机进程信息命令行工具,它可以显示Java虚拟机进程执行主...另外,jps命令只能显示它有访问权限Java进程信息。 虽然jps命令功能比较单一,但它使用频率却很高。...对于本地虚拟机来说,本地虚拟机唯一ID和操作系统进程ID(PID,Process Identifier)一致,如果同时启动多个Java虚拟机进程,无法根据进程名称确定某个进程,我们就是使用jps命令显示主名称功能区分出来...-mlvV:我们可以指定这些参数任意组合。 -m:显示Java虚拟机启动时传递给main()方法参数。 -l:显示主完整包名,如果进程执行JAR文件,也会显示JAR文件完整路径。...59014 sun.tools.jps.Jps -lm 90267 sun.tools.jstat.Jstat -gc 15729 1000 结尾 虽然jps命令已经推出很久并且使用频率很高,但它仍然一个

6.3K41

简述一下面向对象”六原则一法则”

这个世界上任何好东西都有两个特征,一个功能单一,好相机绝对不是电视购物里面卖那种一个机器有一百多种功能,它基本上只能照相;另一个模块化,好自行车组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装...需要注意:子类一定是增加父能力而不是减少父能力,因为子类比父能力更多,把能力多对象当成能力少对象来用当然没有任何问题。) 接口隔离原则:接口要小而,绝不能大而全。...Java接口代表能力、代表约定、代表角色,能否正确使用接口一定是编程水平高低重要标识。) 合成聚合复用原则:优先使用聚合或合成关系复用代码。...(通过继承来复用代码面向对象程序设计中被滥用得最多东西,因为所有的教科书都无一例外对继承进行了鼓吹从而误导了初学者,之间简单说有三种关系,Is-A关系、Has-A关系、Use-A关系,分别代表继承...,需要说明,即使在JavaAPI中也有不少滥用继承例子,例如Properties继承了Hashtable,Stack继承了Vector,这些继承明显就是错误,更好做法在Properties

78620

面向对象六原则一法则

这个世界上任何好东西都有两个特征,一个功能单一,好相机绝对不是电视购物里面卖那种一个机器有一百多种功能,它基本上只能照相;另一个模块化,好自行车组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装...需要注意:子类一定是增加父能力而不是减少父能力,因为子类比父能力更多,把能力多对象当成能力少对象来用当然没有任何问题。)- 接口隔离原则:接口要小而,绝不能大而全。...Java接口代表能力、代表约定、代表角色,能否正确使用接口一定是编程水平高低重要标识。)- 合成聚合复用原则:优先使用聚合或合成关系复用代码。...(通过继承来复用代码面向对象程序设计中被滥用得最多东西,因为所有的教科书都无一例外对继承进行了鼓吹从而误导了初学者,之间简单说有三种关系,Is-A关系、Has-A关系、Use-A关系,分别代表继承...,需要说明,即使在JavaAPI中也有不少滥用继承例子,例如Properties继承了Hashtable,Stack继承了Vector,这些继承明显就是错误,更好做法在Properties

42720

吃透这套BAT大厂Java面试题,拿offer成功率再翻一番

所以 Java 程序运行时比较高效,而且,由于字节码并不对一种特定机器,因此,Java 程序无须重新编译便可在多种不同计算机上运行。...它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。 JRE Java 运行时环境。... Java 有自动内存管理机制,不需要程序员手动释放无用内存 六、什么 Java 程序 应用程序和小程序有何不同 一个程序中可以有多个,但只能有一个。...在 Java 应用程序中,这个主指包含 main()方法。而在 Java 小程序中,这个主一个继承自系统 JApplet 或 Applet 子类。...应用程序不一定要求是 public,但小程序要求必须 public 。主 Java 程序执行入口点。 七.

49530

Java加载原理与ClassLoader使用总结

其实是因为ClassLoader这个一个抽象,实际在使用时候会写个子类,这个方法会按照需要被重写,来完成业务需要加载过程。...自定义ClassLoader 在自定义ClassLoader子类时候,我们常见会有两种做法,一种重写loadClass方法,另一种重写findClass方法。...个人认为比较好做法其实是只在findClass里重写自定义加载方法。...因此我们最好在双亲委托模型框架内进行小范围改动,不破坏原有的稳定结构。...当然有的,前面之所以不能直接用名引用是因为原生加载器systemClassLoader,而从class文件创建加载器自定义classLoader,这两个本质不一样,因此才不能互相强制转换

25540

深入探讨 Java 加载器

它是 sun.misc.Launcher$AppClassLoader实例;第二个输出扩展加载器, sun.misc.Launcher$ExtClassLoader实例。...它实现与 FileSystemClassLoader类似。在通过 NetworkClassLoader加载了某个版本之后,一般有两种做法使用它。第一种做法使用 Java 反射 API。...另外一种做法使用接口。需要注意,并不能直接在客户端代码中引用从服务器上下载,因为客户端代码加载器找不到这些使用 Java 反射 API 可以直接调用 Java 方法。...而使用接口做法则是把接口放在客户端中,从服务器上加载实现此接口不同版本。在客户端通过相同接口来使用这些实现。网络加载器具体代码见 下载。...这与一般加载器顺序相反。这是 Java Servlet 规范中推荐做法,其目的使得 Web 应用自己优先级高于 Web 容器提供

56620

深入探讨 Java 加载器

它是 sun.misc.Launcher$AppClassLoader实例;第二个输出扩展加载器, sun.misc.Launcher$ExtClassLoader实例。...它实现与 FileSystemClassLoader类似。在通过NetworkClassLoader加载了某个版本之后,一般有两种做法使用它。第一种做法使用 Java 反射 API。...另外一种做法使用接口。需要注意,并不能直接在客户端代码中引用从服务器上下载,因为客户端代码加载器找不到这些使用 Java 反射 API 可以直接调用 Java 方法。...而使用接口做法则是把接口放在客户端中,从服务器上加载实现此接口不同版本。在客户端通过相同接口来使用这些实现。网络加载器具体代码见 下载。...这与一般加载器顺序相反。这是 Java Servlet 规范中推荐做法,其目的使得 Web 应用自己优先级高于 Web 容器提供

74940

Java编程常见问题汇总3

这里本意希望用当前来加载希望对象, 但是这里getClass()可能抛出异常, 特别在一些受管理环境中, 比如应用服务器, web容器, Java WebStart环境中, 最好做法使用当前应用上下文加载器来加载...当然这里又涉及到另外一个OO设计问题, 对外暴露Date实例本身就是不好做法(一般做法在setter方法中设置Date引用参数clone对象)....使用全局参数配置常量/接口 ? 很多应用都会定义这样一个全局常量或接口, 但是为什么这种做法不推荐? 因为这些常量之间基本没有任何关联, 只是因为公用才定义在一起....但是如果其他组件需要使用这些全局变量, 则必须对该常量产生依赖, 特别是存在server和远程client调用场景。 比较好做法将这些常量定义在组件内部. 或者局限在一个库内部。...通常绝不要对float和double使用==操作. 而采用大于和小于操作. 如果java编译器能针对这种情况给出警告. 或者在java语言规范中不支持浮点数类型==操作就最好了。 正确写法: ?

49720

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券