首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java-如何调用具有返回类型的方法

Java-如何调用具有返回类型的方法
EN

Stack Overflow用户
提问于 2012-04-15 07:45:21
回答 1查看 177关注 0票数 0

我试图从另一个类调用一个返回类型的方法,但我一直收到错误,它对于类的类型是未定义的。下面是我尝试调用的代码:

代码语言:javascript
复制
   public MyTask() {

    id =   plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin,this,plugin.getConfig().getInt("StunDuration") * 20);
    if(id == -1)
    {
        plugin.getLogger().warning("BLARG");
    }
   }

我如何从另一个类中调用该方法?

代码语言:javascript
复制
 public class DamageListener implements Listener{
private antirelog plugin;       
public DamageListener (antirelog plugin) {
    this.plugin = plugin;
}
    Player realplayer1;
    Player realplayer2;
    boolean playeradd = false;
    private MyTask task;
    public static boolean isDamaged = false;
    public static boolean timerTask = true;
    static Set<Player> Damagelist = Collections.newSetFromMap(new   WeakHashMap<Player,Boolean>());

 @EventHandler
 public void damage (EntityDamageEvent event) {
Entity victim = event.getEntity();
if (event instanceof EntityDamageByEntityEvent) {
    EntityDamageByEntityEvent edbeEvent = (EntityDamageByEntityEvent) event;
    if(edbeEvent.getDamager() instanceof Player && victim instanceof Player) {
        EntityDamageByEntityEvent edbeEvent1 = (EntityDamageByEntityEvent) event;
        Entity attacker = edbeEvent1.getDamager();
        Player player = (Player) victim;
        realplayer1 = player;
        Player player2 = (Player) attacker;
        realplayer2 = player2;
        if(Damagelist.contains(realplayer1) || Damagelist.contains(realplayer2)) {
            isDamaged = true;
            timerTask = false;
            System.out.println("Cancel");
            MyTask();
        } else {
        Damagelist.add(realplayer1);
        Damagelist.add(realplayer2);            
        isDamaged = true;
        Pause ps = new Pause(plugin);
        MyTask();
        }

            }

    }

下面是MyTask类。

代码语言:javascript
复制
public class MyTask implements Runnable
{

private antirelog plugin;
private int id = -1;

/**
* Generic constructor
* @param Plugin task is associated with
* @return 
*/      
public MyTask (antirelog plugin) {
this.plugin = plugin;
}
public void MyTask() {

     id =   plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin,this,plugin.getConfig().getInt("StunDuration") * 20);
    if(id == -1)
    {
        plugin.getLogger().warning("BLARG");
    }
   }


/**
* Do stuff when scheduler tells task to run
*/
@Override
public void run()
{
    if (DamageListener.timerTask == true) {
    DamageListener dl = new DamageListener(plugin);
    dl.Then();
    } 
    else if (DamageListener.timerTask == false) {
        plugin.getServer().getScheduler().cancelTask(id);
        DamageListener.timerTask = true;
    }
 }

 /**
 * Remove task from scheduler
 * @return True if successfully stopped. Else false.
 */
 public boolean stopTask()
  {
    if(id != -1)
    {
        plugin.getServer().getScheduler().cancelTask(id);
        return true;
    }
    return false;
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 07:47:44

由于MyTask()是一个构造函数,对于要在另一个类中实例化的类MyTask,它必须以new关键字为前缀,如下所示:

代码语言:javascript
复制
...
isDamaged = true;
Pause ps = new Pause(plugin);
task = new MyTask(plugin); //Note the `new` keyword
...

另外,让我们也修复一些其他的东西。

代码语言:javascript
复制
public MyTask (antirelog plugin)
{
    this.plugin = plugin;
    if (plugin != null) {
        id = plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin,this,plugin.getConfig().getInt("StunDuration") * 20);
        if (id == -1)
        {
            plugin.getLogger().warning("BLARG");
        }
    }
}

//public MyTask() //Remove the void, this is a constructor
//{
//  this(null); //Call the extended constructor
//}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10158327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档