【发布时间】:2015-12-30 11:03:52
【问题描述】:
我在 Android Studio 中使用 java.lang.SuppressWarnings 包。
我无法摆脱这个:
EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object (findbugs task)
这是通过 setter 方法发生的。
如何摆脱这个警告?
public class PropertyDetailDocumentStorageModel implements Parcelable {
@SerializedName("picture")
private byte[] mPicture;
public void setmPicture(byte[] mPicture) { this.mPicture = mPicture; }
警告:
setmPicture(byte[]) may expose internal representation by storing an externally mutable object into PropertyDetailDocumentStorageModel.mPicture
请注意,这发生在唯一类型为 byte[] 的字段上。同一类中具有 getter 的其他字段不会引发此警告。
【问题讨论】:
-
您是想抑制警告,还是解决代码中的问题?如果是后者,我们需要查看您的代码。
-
我想找到一种方法来使用@Supress 停止警告...或者找到另一种方法来改进代码(如果有的话)?
-
感谢@Thomas,实际上它有一个 getter:
public byte[] getmPicture() { return mPicture.clone(); }感谢您指出 setter 的 bean 约定。 (public void setP(T)) 我将尝试使用 Arrays.copyOf()。你建议的最后一件事是“抑制警告”,这正是我需要帮助的。该警告的关键字是什么? @SupressWarning("...?)。谢谢! -
您确定 URF_UNREAD_FIELD 适用于
mPicture字段吗?只是问一下,因为您的描述和错误消息中的错误类型不同。 -
是的,正如我在下面的回答中所写,数组总是可变的。所以是的,这是因为你有一个数组(其他数组也一样)。
标签: java android arrays findbugs