[英]How to get rid of static variable in my java code?
Guys: 专家:
I would ask a question that may sounds silly. 我想问一个听起来很愚蠢的问题。 I need to remove using a class static variable which is a counter by senior teammate.
我需要使用类静态变量删除该类,该变量是高级队友的计数器。 he said I should only use static member when necessary, and it is thread unsafe.
他说我只应在必要时使用静态成员,这是线程不安全的。 All I can figure out is to use synchronized key word.
我能弄清楚的是使用同步关键字。 I would know if there is better solution.
我想知道是否有更好的解决方案。 Here is below is my current code.
下面是我当前的代码。
package gov.faa.infra.ifp.domain.dao.isc;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import java.util.List;
import org.apache.log4j.Logger;
import gov.faa.infra.ifp.message.MessageCollectionBean;
public abstract class IdentifiableTest<T>{
private static int recordedMessageLength=0;
private static Logger logger = Logger.getLogger(IdentifiableTest.class.getName());
abstract public void checkIndividualIdentifiable(T identifiableObject);
public void checkIdentifiable(T identifiableObject){
checkMessageCollection();
checkIndividualIdentifiable(identifiableObject);
}
public void checkIdentifiableList(List<T> identifiableList){
checkMessageCollection();
assertNotNull(identifiableList);
assertTrue(identifiableList.size()>0);
for (int i=0; i<identifiableList.size(); i++){
checkIndividualIdentifiable(identifiableList.get(i));
}
}
public void checkMessageCollection(){
if (MessageCollectionBean.getMessages()!=null){
if (MessageCollectionBean.getMessages().length>recordedMessageLength){
int i=MessageCollectionBean.getMessages().length-1;
for (String message: MessageCollectionBean.getMessages()){
if(i>=recordedMessageLength){
logger.debug(message+"##"+i+"th message in the total of "+MessageCollectionBean.getMessages().length+" messages. recordedMessageLength="+recordedMessageLength+"####Message Collection Bean");
}
i--;
}
recordedMessageLength=MessageCollectionBean.getMessages().length;
}
}
assertTrue(MessageCollectionBean.getMessages()==null || MessageCollectionBean.getMessages().length==recordedMessageLength);
}
}
看起来它是由checkMessageCollection()
计算的,因此使其成为方法调用的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.