Tag: 抑制警告

在generics中将@SuppressWarnings(“unchecked”)添加到单行生成eclipse编译器错误

我偶然发现了一个我不理解的奇怪行为。 我必须将一个String转换为generics,它会产生一个警告。 Type safety : Unchecked cast from String to T 如果我在方法声明上面添加@SuppressWarnings(“unchecked”)它可以正常工作。 如果我将它添加到赋值之上,它会在eclipse中产生编译错误。 这很好用。 @SuppressWarnings(“unchecked”) public T search(final String query){ T returnValue = null; … if(returnValue instanceof String){ returnValue = (T) collection.getString(attrName); } 这不行。 public T search(final String query){ T returnValue = null; … if(returnValue instanceof String){ @SuppressWarnings(“unchecked”) // Compiler error: “returnValue cannot be resolved […]

由于“通过varargs参数的潜在堆污染”,Eclipse的“未检查”警告的行为不同。 怎么修?

我有一个简单的Entry对象来填充列表 public class Entry { //fields public Entry(int a, String b, String c) { //… } //some getters } 以及检索条目的AsyncTask 。 在onProgressUpdate …… (here) | @Override V protected void onProgressUpdate(List… param) { for (Entry e : param[0]) myAdapter.add(e); progressBar.incrementProgressBy(1); myAdapter.notifyDataSetChanged(); } 我有警告: 类型安全:通过varargs参数参数进行潜在的堆污染 这发生在PC Linux 64bit上,而相反的警告显示在具有相同版本的Eclipse的笔记本上,相同的android项目,相同的Linux Mint 16,只是一个32位操作系统,说明“ 删除这个不必要的注释 ”(对不起,如果这个不是精确的警告,我现在在桌面PC上)。 所以基本上我添加和删除注释,在两台机器之间切换。 我认为这显然可能与正在使用的Java编译器或其他工作区设置有关。 现在,我不是在问这个设置/环境差异究竟是什么,但我的问题是我是否可以在代码中做些什么来解决这个问题并删除警告本身的来源。 我已经读过这个警告的起源和“堆污染”在这里意味着什么,但是没有消息来源暗示可能的修复(即这里或这里 ) […]

@SuppressWarnings(“串行”)

我有一个问题,因为我有点困惑(或者我可能没注意到一些明显的东西)。 假设我有一些包含很多类的源代码,这些类包含大量像这样定义的静态字段: public final class ConverterTYPE { private final static HashMap STRING_MAP = new HashMap() { { put(“A”, new Byte((byte)12)); put(“B”, new Byte((byte)13)); } }; } 众所周知,静态字段不会被序列化。 但是,Java(和Eclipse)抱怨“可序列化类没有声明类型为long的静态最终serialVersionUID字段”。 为什么他们不能注意到静态不会被序列化? 接下来的问题是:使用@SuppressWarnings(“serial”)摆脱所有这些警告,这个问题是否正确? 编辑: 我的类都没有实现Serializable接口(或者没有超类)。 Eclipse指向HashMap及其警告。 为什么不检测到它是静态场?