Intellij为什么要导入;“错误”;安全随机类(Java)?
我正在写一个程序,需要一个安全的随机对象。创建后,Intellij自动导入了“sun.security.provider.SecureRandom”。 但是有了这个导入,我无法调用很多方法。例如,我无法使用“nextInt()”或“doubles()”以及许多其他方法 但是如果我手动导入“java.security.SecureRandom”,我就能够使用上述方法生成随机数 但是,“sun.security.provider.SecureRandom”导入确实提供了“engineGenerateSeed”之类的其他方法,我不能用“java.security.SecureRandom”调用这些方法Intellij为什么要导入;“错误”;安全随机类(Java)?,java,secure-random,Java,Secure Random,我正在写一个程序,需要一个安全的随机对象。创建后,Intellij自动导入了“sun.security.provider.SecureRandom”。 但是有了这个导入,我无法调用很多方法。例如,我无法使用“nextInt()”或“doubles()”以及许多其他方法 但是如果我手动导入“java.security.SecureRandom”,我就能够使用上述方法生成随机数 但是,“sun.security.provider.SecureRandom”导入确实提供了“engineGenerate
因此,我的实际问题是,为什么有两种不同的导入方式(我不能同时导入这两种方式)以及它们的用途是什么?它们是不同的实现。他们只是碰巧被称为同一件事。为什么我的朋友Tom和你的兄弟Tom看起来不一样?“我不能同时导入这两个”对吧,因为在你的代码中,
SecureRandom
指的是哪一个?如果两个都需要(但不需要),则可以导入一个并引用另一个的完全限定名(例如,在类中,您将使用SecureRandom
和java.security.SecureRandom
),您可以在代码中同时使用这两个名称。您只需使用完全解析的类名引用每个类。您不能再在代码中使用短类名。你必须把它们拼出来。您应该避免使用以“sun”开头的软件包。它们被清楚地标记为随时可能被弃用和删除。