Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编译警告不安全条件_Java_Compiler Warnings_Javac - Fatal编程技术网

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

我最近开始用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: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..:PClass
Hashtable
需要键和值的泛型类型参数@jlordo编辑了它,谢谢。我在想它是hashSet..:P