sun.misc.Service的替换类

And*_*ert 4 java java-9

我有一些依赖于sun.misc.ServiceAPI的旧(pre java 6)代码,例如:

sun.misc.Service.providers(MyServiceProvider.class);
Run Code Online (Sandbox Code Playgroud)

Java 9中正在删除此类(不仅仅是内化).

我可以使用哪种备用Java SE API?

And*_*ert 7

sun.misc.Service班已取代java.util.ServiceLoaderJava 6中.

以下代码示例是等效的:

之前

Iterator<MyServiceProvider> = sun.misc.Service.providers(MyServiceProvider.class);
Run Code Online (Sandbox Code Playgroud)

Iterator<MyServiceProvider> = java.util.ServiceLoader.load(MyServiceProvider.class).iterator();
Run Code Online (Sandbox Code Playgroud)

正如评论中指出的那样,java.util.ServiceLoader已经存在了很长时间(Java 6).

  • `java.util.ServiceLoader`自Java 1.6以来一直存在. (3认同)