Java编译警告不安全条件
我最近开始用java编程,我编写了以下代码: 代码可以正常工作,但我得到了一个愚蠢的警告:Java编译警告不安全条件,java,compiler-warnings,javac,Java,Compiler Warnings,Javac,我最近开始用java编程,我编写了以下代码: 代码可以正常工作,但我得到了一个愚蠢的警告: C:\Users\mou\Desktop\JavaMD5cracker-master>javac icrackmd5.java Note: .\brute.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 听起来好像编译器发现这行代码(brute.java:l2
C:\Users\mou\Desktop\JavaMD5cracker-master>javac icrackmd5.java
Note: .\brute.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
听起来好像编译器发现这行代码(brute.java:l26)不安全或者我不知道
if (tries > (int)pows.get(lenght-1))
有人能帮我吗?只是您正在另一个对象中对
int
执行强制转换操作。这是一个未检查的操作,因为编译器无法检查通过pows.get(length-1)
返回的内容是否真的可以转换为int
如果您信任(我的意思是真正信任)您的代码,并且知道int
的转换总是可以完成的,那么您可以这样做,这只是一个编译器警告
同时,看一下这个物体。也许有一种简单而安全的方法来完成你想要完成的事情
编辑
更改此选项:
Hashtable pows = new Hashtable();
致:
Hashtable pows=new Hashtable();
将删除编译器注释。只是在另一个对象中对
int
执行强制转换操作。这是一个未检查的操作,因为编译器无法检查通过pows.get(length-1)
返回的内容是否真的可以转换为int
如果您信任(我的意思是真正信任)您的代码,并且知道int
的转换总是可以完成的,那么您可以这样做,这只是一个编译器警告
同时,看一下这个物体。也许有一种简单而安全的方法来完成你想要完成的事情
编辑
更改此选项:
Hashtable pows = new Hashtable();
致:
Hashtable pows=new Hashtable();
将删除编译器注释。这是因为在brute.java中声明了哈希表
Hashtable pows = new Hashtable();
当编译器执行这一行时
if (tries > (int)pows.get(lenght-1))
它不知道来自pows的元素的类型
使用泛型更改哈希表声明
Hashtable<Integer, Integer> pows = new Hashtable<Integer,Integer>();
Hashtable pows=new Hashtable();
这是因为您在brute.java中的哈希表声明
Hashtable pows = new Hashtable();
当编译器执行这一行时
if (tries > (int)pows.get(lenght-1))
它不知道来自pows的元素的类型
使用泛型更改哈希表声明
Hashtable<Integer, Integer> pows = new Hashtable<Integer,Integer>();
Hashtable pows=new Hashtable();
该类包含以下内容:
Hashtable pows = new Hashtable();
它使用原始类型哈希表
。这里应该使用泛型。此外,它应该使用HashMap
而不是旧式集合类Hashtable
Map<Integer, Integer> = new HashMap<Integer, Integer>();
(注意“lenght”拼写错误,应该是“length”)
除此之外,成员变量应该是私有的,并且代码不符合世界上大多数国家使用的事实上的编码标准(类名应以大写字符开头,变量名不应包含下划线)。该类包含以下内容:
Hashtable pows = new Hashtable();
它使用原始类型哈希表
。这里应该使用泛型。此外,它应该使用HashMap
而不是旧式集合类Hashtable
Map<Integer, Integer> = new HashMap<Integer, Integer>();
(注意“lenght”拼写错误,应该是“length”)
除此之外,成员变量应该是private
,并且代码不符合世界上大多数国家使用的事实上的编码标准(类名应以大写字符开头,变量名不应包含下划线)。请在问题中包含更多代码。我们需要知道什么是pows
。您可能需要提供更多的上下文。请检查github链接,像这样声明pows:Hashtable pows=new Hashtable()代码>所以我们正在这里构建一个暴力MD5破解程序?请在您的问题中包含更多的代码。我们需要知道什么是pows
。您可能需要提供更多的上下文。请检查github链接,像这样声明pows:Hashtable pows=new Hashtable()代码>所以我们在这里构建一个蛮力MD5破解程序?类哈希表需要键和值的泛型类型参数@jlordo编辑了它,谢谢。我在想它是hashSet..:PClassHashtable
需要键和值的泛型类型参数@jlordo编辑了它,谢谢。我在想它是hashSet..:P