我实例化了我的Message对象并将它们放入这个消息数组(收件箱)中。这是在Identify类中完成的。但是,当我尝试在我的Filter类中获取这些Message对象时,对象本身变为null并且我什么也得不到它。为什么呢?
以下是识别电子邮件的方法:
public void identifyEmail(String input1)
throws IOException, NumberFormatException,
ArrayIndexOutOfBoundsException, EmptyArrayException
{
inFile = new File(input1);
in = new Scanner(inFile);
int MESSAGE_AMOUNT = countMessage(input1);
for(int i = 0;i<MESSAGE_AMOUNT;i++){
noMoreMail = true;
emailAddress = find(input1,"From:");
if(noMoreMail){
break;
}
MIN = extractInt(find(input1,"MIN:"));
message = getMessage(input1);
target++;
ib.addMessage(MIN, emailAddress, message);
}
}
我有一个Inbox类来保存Message对象数组:
public class Inbox {
public Message[] inbox;
public int messageCount;
public Inbox(){
inbox = new Message[100];
messageCount = 0;
}
这就是问题所在。当它循环遍历Filter类中的电子邮件时,它只会通过null Messages。
for(int i=0; i<ib.messageCount; i++){
Message email = ib.inbox[i];
System.out.println(email.getMIN());
test1 = checkBlackList(email);
if(!test1){test2 = checkKeyword(email);}
// if spam mail is not on black list but still is spam
if(test1){updateKeywords(email);}
if(test2){addToBlackList(email);}
if(test1 || test2){
minToAdd = addToMINList(email);
}
}
谢谢!
addMessage方法
public void addMessage(int MIN, String emailAddress, String message){
if(messageCount < 100){
Message m = new Message(MIN, emailAddress, message);
inbox[messageCount] = m;
messageCount++;
} else {
increaseSize();
Message m = new Message(MIN, emailAddress, message);
inbox[messageCount] = m;
messageCount++;
}
}
答案 0 :(得分:2)
如果不直接填充数组的成员,那么该数组只是null
值的加载,或原始类型的默认值。
示例
String[] strs = new String[10];
// Strs = {null, null .... null}
Object[] objs = new Object[10];
objs[0] = new Object();
// objs = {new Object(), null, null ... null}
所以你看,只需通过声明数组,就不会定义它的元素。
答案 1 :(得分:0)
我建议使用Message对象的ArrayList而不是仅使用Array,因为它会为您提供各种各样的功能。
查看您的代码,我怀疑问题可能出在addMessage()方法中。
ib is the object of Inbox class. When you are calling the method addMessage, are you
updating messages in the inbox array of the 'this'(i.e. the ib ) object? or you are
instantiating another Inbox object and adding the Messages there?
Could you furnish the addMessage() code up here...?
这不是答案,应视为评论。请不要接受它作为答案。 我没有足够的权限发表评论。
请不要否定它。