【问题标题】:How do I get those 2 errors to go away? in and valueOf methods - Java如何让这两个错误消失? in 和 valueOf 方法 - Java
【发布时间】:2015-05-02 19:59:50
【问题描述】:

因为 Eclipse IDE“这么说”,我对这 2 个小错误感到有些苦恼。我会指出错误。老实说,我不知道如何深入解释这些错误。我认为它们很简单,我无法消除错误。

    ScheduledExecutorService timer = Executors.newScheduledThreadPool (1);
    timer.scheduleAtFixedRate(new Runnable() 
    {
        public void run() 
        {
            if (lists. size ()> 0) 
            {
                boolean lighted = Lamp.valueOf(Road.this.name).isLighted(); //According to Eclipse, "The method valueOf(Class<T>, String) in the type Enum<Lamp> is not applicable for the arguments (String)"

                if (lighted) 
                {
                    System.out.println(lists.remove(0) + "is traversing!");
                }
            }
        }
    }, 1,1, TimeUnit. SECONDS);

我的包中的另一个错误

public Lamp Blackout() 
{
    this.lighted = false;

    if (opposite != null) 
    {
        Lamp.valueOf(opposite).in.Blackout(); //in cannot be resolved or is not a field. It suggests me to create enum constant, which I did and it wouldn't work either. 
    }

    Lamp nextLamp = null;

    if (next != null) 
    {
        nextLamp = Lamp.valueOf(next);
        System.out.println("Green" + name () + "--------> switch to" + next);
        nextLamp.light();
    }
    return nextLamp;
}

【问题讨论】:

  • 我们需要查看简短但完整的代码示例,让我们重现这些问题。但通常不会显示错误因为 Eclipse IDE“这么说”。而是因为代码中存在问题。

标签: java methods enums value-of


【解决方案1】:

你的第一个错误 Lamp.valueOf(Road.this.name).isLighted();

//根据Eclipse,“方法valueOf(Class, String)在 类型枚举不适用于参数(字符串)"

Lamp.valueOf() 方法需要两个参数,首先是一个类参数,然后是一个字符串参数。您刚刚在方法中传递了一个 String 参数,这就是 eclipse 抛出错误的原因。

你第二个错误

Lamp.valueOf(opposite).in.Blackout();

//in 无法解析或不是字段。

在我看来,它的语法不正确。彻底检查您的代码。在您的代码方法中被链接。 in 不应该在那里。也可能是方法in()

【讨论】:

    【解决方案2】:

    在黑暗中拍摄,因为您尚未披露所有相关代码,但您可以尝试在此处添加 valueOf 缺少的参数:

    boolean lighted = Lamp.valueOf(Lamp.class, Road.this.name).isLighted();
    

    并在此处调用in() 方法

    Lamp.valueOf(Lamp.class, opposite).in(Blackout());
    

    请关注Java code style conventions;方法名称应以小写字母开头,因此 blackout 方法签名应如下所示:

    public Lamp blackout()
    

    没有看到Lampenum的代码,就不可能知道后一种情况的确切问题是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多