到目前为止,这是我的代码:
public class RestApplication extends Application {
private final Set<Class<?>> resourceSet;
public RestApplication() {
this.resourceSet = new HashSet<Class<?>>();
resourceSet.add(PCardController.class);
resourceSet.add(PricingController.class);
resourceSet.add(TransactionFeedController.class);
initializeMaps();
}
@Override
public Set<Class<?>> getClasses() {
return resourceSet;
// ...
} // Added by edit!
// ...
} // Added by edit!
SonarQube说副本的返回是一个资源集。
我该怎么办?
答案 0 :(得分:1)
您可以返回一个新的HashSet:
@Override
public Set<Class<?>> getClasses() {
return new HashSet<>(resourceSet);
}
答案 1 :(得分:0)
或者使结果不可修改;不太好的用法,更好的占用空间和速度。
@Override
public Set<Class<?>> getClasses() {
return Collections.unmodifiableSet(resourceSet);
}
答案 2 :(得分:0)
此错误是因为在某些情况下Java通过引用返回。这是一个测试,以证明通过引用。 list.size()返回3。
List<String> list=new ArrayList<String>();;
List<String> getList(){
list.add("hello");
return list;
}
@Test
public void run(){
getList().add("hey");
List<String> list = getList();
list.size();
}