Java 是否可能有一个对象在其中创建另一个自身副本';s构造函数,同时避免无限循环?

Java 是否可能有一个对象在其中创建另一个自身副本';s构造函数,同时避免无限循环?,java,Java,我没有任何理由相信这是可能的,但我正试图恢复我再次提问的能力,考虑到我现在能够做出贡献(计算机科学专业四年级,从事软件工程工作),与我高中四年级时相比,在我真正了解Java之前,试着玩minecraft modding 这是一段最初不起作用的代码,它触发了我决定提出这个问题 /** * */ package net.halalaboos.huzuni.console.commands; import net.halalaboos.huzuni.Huzuni; import net.hala

我没有任何理由相信这是可能的,但我正试图恢复我再次提问的能力,考虑到我现在能够做出贡献(计算机科学专业四年级,从事软件工程工作),与我高中四年级时相比,在我真正了解Java之前,试着玩minecraft modding

这是一段最初不起作用的代码,它触发了我决定提出这个问题

/**
 *
 */
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;

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();
            }

        }
    }
}
/**
*
*/
包net.halalaboos.huzuni.console.commands;
导入net.halalaboos.huzuni.huzuni;
导入net.halalaboos.huzuni.client.notifications.Notification;
导入net.halalaboos.huzuni.console.Command;
导入net.halalaboos.lib.io.FileUtils;
导入net.minecraft.src.guiplayerfo;
导入net.minecraft.src.StringUtils;
导入twitter4j.*;
导入twitter4j.conf.ConfigurationBuilder;
导入twitter4j.TwitterException;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
公共类TwitterAlerts实现命令{
公众地位推特;
公共字符串提醒;
public ConfigurationBuilder cb=new ConfigurationBuilder();
TwitterFactory tf=新的TwitterFactory(cb.build());
Twitter=tf.getInstance();
TwitterAlerts对象=新建TwitterAlerts();
TwitterAlerts()
{
setkey();
检查状态();
}
public void setkey()
{
setkey();
cb.setDebugEnabled(true);
cb.setOAuthConsumerKey(“5c8ZcMgQihdS5kzGun9iSw”);
cb.SetOAuthConsumerCret(“aRUUbQnDu5yAjmdI23LdjRu6vDtPWaKhc6dFVklne0”);
}
List twitters=new ArrayList();
List pasttweets=new ArrayList();
/**
*@see net.halalaboos.huzuni.console.Command#getAliases()
*/
@凌驾
公共字符串[]getAlias(){
返回新字符串[]{“twitteralerts”,“tfollow”};
}
/**
*@see net.halalaboos.huzuni.console.Command#getHelp()
*/
@凌驾
公共字符串[]getHelp(){
返回新字符串[]{“Do/twitteralerts to alerted to alerted of new tweets!”;
}
/**
*@see net.halalaboos.huzuni.console.Command#getDescription()
*/
@凌驾
公共字符串getDescription(){
return“在游戏中提醒关注帐户上的新tweet。”;
}
/**
*@see net.halalaboos.huzuni.console.Command#run(java.lang.String,java.lang.String[])
*/
@凌驾
公共无效运行(字符串输入,字符串[]args){
添加(输入);
}
公共无效检查状态()
{
while(twitters!=null)
{
试一试{

对于(int i=0;i您的类有一个字段

TwitterAlerts object = new TwitterAlerts();
当您初始化此字段时,它将创建一个新对象,这将创建一个新对象

每个
TwitterAlerts
对象都有一个
TwitterAlerts
对象,该对象有一个
TwitterAlerts
对象,该对象有一个
TwitterAlerts
…明白了吗

去掉那个字段。你甚至都不用它。

看看这些行

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

当你创建一个TwitterAlerts实例时,它会创建另一个TwitterAlerts实例。然后再创建另一个TwitterAlerts实例……你知道为什么吗?

TwitterAlerts object=new TwitterAlerts()
TwitterAlerts.java
第32行是什么?
为什么不向我们展示这个方法?从那里开始。不要从StackOverflow开始。我们也看不出它为什么这样做。也许如果你发布一些代码,它会让我们更清楚TwitterAlerts对象=新TwitterAlerts();是第32行。我确实发布了代码,它就在那里。也许在构造函数中调用check_status不是那么明智……我认为我必须这样做才能初始化类的构造函数。而不是在类本身中。你可以在任何地方创建实例。如果你将其作为类本身的一个字段来做,你会得到一个stackoverflow。制作一个
main()
方法并在那里创建一个实例。