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