我想用 Eclipse 执行 this RxTx web site 提供的示例代码 :
import gnu.io.*;
public class SerialPortLister {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
listPorts();
}
private static void listPorts()
{
java.util.Enumeration<CommPortIdentifier> portEnum = CommPortIdentifier.getPortIdentifiers(); // this line has the warning
while ( portEnum.hasMoreElements() )
{
CommPortIdentifier portIdentifier = portEnum.nextElement();
System.out.println(portIdentifier.getName() + " - " + getPortTypeName(portIdentifier.getPortType()) );
}
}
private static String getPortTypeName ( int portType )
{
switch ( portType )
{
case CommPortIdentifier.PORT_I2C:
return "I2C";
case CommPortIdentifier.PORT_PARALLEL:
return "Parallel";
case CommPortIdentifier.PORT_RAW:
return "Raw";
case CommPortIdentifier.PORT_RS485:
return "RS485";
case CommPortIdentifier.PORT_SERIAL:
return "Serial";
default:
return "unknown type";
}
}
}
第 13 行有一个警告:Type safety: The expression of type Enumeration needs unchecked conversion to conform to Enumeration<CommPortIdentifier>
这个警告是什么意思,如何解决?
最佳答案
详细阐述 Vladislav Bauer 的第二个要点,您可以像这样初始化 portEnum:
Enumeration<?> portEnum = CommPortIdentifier.getPortIdentifiers();
然后在 while 结构内部,您可以将每个元素转换为您需要的类型,在本例中为 CommPortIdentifier:
CommPortIdentifier portIdentifier = (CommPortIdentifier) portEnum.nextElement();
转换每个元素将使警告消失。但是我们必须小心并确保 portEnum 始终包含我们期望的 CommPortIdentifier 类型的元素。
关于java - 枚举警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133460/