构造函数导致错误,垃圾邮件控制台

时间:2013-10-11 01:30:32

标签: java

当运行下面的代码时,我似乎得到了一个无限循环;我现在相信这是因为我在同一个对象中创建了一个对象的实例。 为什么这会产生无限循环? 代码是

/**
 *
 */
package net.halalaboos.huzuni.console.commands;

import net.halalaboos.huzuni.Huzuni;
import net.halalaboos.huzuni.client.notifications.Notification;
import net.halalaboos.huzuni.console.Command;
import net.halalaboos.lib.io.FileUtils;
import net.minecraft.src.GuiPlayerInfo;
import net.minecraft.src.StringUtils;
import twitter4j.*;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.TwitterException;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


/**
 * @author Halalaboos
 * @since Aug 11, 2013
 */

public class TwitterAlerts implements Command {
    public Status tweet;
    public String tweetalert;
    public ConfigurationBuilder cb = new ConfigurationBuilder();
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    TwitterAlerts object = new TwitterAlerts();
    TwitterAlerts()
    {
        setkey();
        checkstatus();
    }
    public void setkey()
    {
        setkey();
        cb.setDebugEnabled(true);
        cb.setOAuthConsumerKey("5c8ZcMgQihdS5kzGun9iSw");
        cb.setOAuthConsumerSecret("aRUUbQnDu5yAjmdI23LdjRu6vDtPWaKhc6dFVklne0");
    }
    List<String> twitters = new ArrayList<String>();
    List<String> pasttweets = new ArrayList<String>();
    /**
     * @see net.halalaboos.huzuni.console.Command#getAliases()
     */
    @Override
    public String[] getAliases() {
        return new String[] {"twitteralerts", "tfollow"};
    }

    /**
     * @see net.halalaboos.huzuni.console.Command#getHelp()
     */
    @Override
    public String[] getHelp() {
        return new String[] {"Do /twitteralerts <name of tweeter> to be alerted of new tweets!"};
    }

    /**
     * @see net.halalaboos.huzuni.console.Command#getDescription()
     */
    @Override
    public String getDescription() {
        return "In game alerts of new tweets on followed accounts.";
    }

    /**
     * @see net.halalaboos.huzuni.console.Command#run(java.lang.String, java.lang.String[])
     */
    @Override
    public void run(String input, String[] args) {
        twitters.add(input);

    }
    public void checkstatus()
    {
        while(twitters != null)
        {
            try {
                for(int i=0;i<twitters.size();i++)
                {
                    tweet = twitter.getUserTimeline(twitters.get(i)).get(0);
                    if (pasttweets.contains(tweet.getText()))
                    {

                    }
                    else
                    {
                        Huzuni.notificationManager.add(new Notification("Tweet Retrieved", tweet.getText()));
                        pasttweets.add(tweet.getText());
                    }
                }


            } catch (TwitterException e) {
                e.printStackTrace();
            }

        }
    }
}

2 个答案:

答案 0 :(得分:3)

你的班级有一个字段

TwitterAlerts object = new TwitterAlerts();

初始化此字段时,会创建一个新对象,该对象会创建一个新对象,令人作呕。

每个TwitterAlerts对象都有一个TwitterAlerts对象,其TwitterAlerts有一个TwitterAlerts ...有这个想法吗?

摆脱那个领域。你甚至没有使用它。

答案 1 :(得分:0)

看看这些行

TwitterAlerts object = new TwitterAlerts();
TwitterAlerts()
{
    setkey();
    checkstatus();
}

当您创建TwitterAlerts的实例时,它将创建它的另一个实例。然后另一个创建它的实例....所以你知道为什么吗?