Java 在类构造函数中使用了枚举,类中的方法无法识别引用变量

Java 在类构造函数中使用了枚举,类中的方法无法识别引用变量,java,inheritance,enums,Java,Inheritance,Enums,我正在学习CSIS 1410类,作为任务的一部分,我需要创建一个枚举,Voltage。然后,我必须创建一个使用枚举作为参数的类,但是当尝试使用参考变量voltage小写v时,它会给我错误电压无法解析为变量。 以下是枚举: public enum Voltage { V110, V220, DUAL; } 下面是使用所述枚举的类 public class DeskPhone extends Phone { public boolean connected; protec

我正在学习CSIS 1410类,作为任务的一部分,我需要创建一个枚举,Voltage。然后,我必须创建一个使用枚举作为参数的类,但是当尝试使用参考变量voltage小写v时,它会给我错误电压无法解析为变量。 以下是枚举:

public enum Voltage
{
    V110, V220, DUAL;
}
下面是使用所述枚举的类

public class DeskPhone extends Phone
{
    public boolean connected;

    protected DeskPhone(String modelArg, Dimensions dimenstion, Voltage voltage) //enum as parameter
    {
        super(modelArg, dimenstion);
    }

    public void plugIn()
    {
        connected = true;
    }

    public void unPlug()
    {
        connected = false;
    }

    public boolean isConnected()
    {
        return connected;
    }

    @Override
    public String toString()
    {
        if(connected == false)
        {
            return super.toString() + " " + voltage + " not connected"; //results in error
        }

        return super.toString() + " " + voltage + " connected";

    }

为什么我不能存储在voltage变量中传递的构造函数并在toString语句中使用它?

因为构造函数参数只在构造函数中可见 您需要将它们绑定到类字段,以便能够在函数中使用它们:

也可以考虑使用Lombok来减少样板

公共布尔连接; 专用电压; 受保护的DeskPhoneString模型参数、尺寸和电压 { 超模,迪曼斯顿; 该电压=电压; }
因为构造函数参数仅在构造函数内部可见 您需要将它们绑定到类字段,以便能够在函数中使用它们:

也可以考虑使用Lombok来减少样板

公共布尔连接; 专用电压; 受保护的DeskPhoneString模型参数、尺寸和电压 { 超模,迪曼斯顿; 该电压=电压; }
问题是,你们从来并没有声明过电压场,你们只把它作为参数传递给构造函数

public class DeskPhone extends Phone
{
    public boolean connected;
    // Here we declade voltage as field
    public Voltage voltage; 

    protected DeskPhone(String modelArg, Dimensions dimenstion, Voltage voltage) //enum as parameter
    {
        super(modelArg, dimenstion);
        // Here we set field value
        this.voltate = voltage;
    }
  ...

问题是,你们从来并没有声明过电压场,你们只把它作为参数传递给构造函数

public class DeskPhone extends Phone
{
    public boolean connected;
    // Here we declade voltage as field
    public Voltage voltage; 

    protected DeskPhone(String modelArg, Dimensions dimenstion, Voltage voltage) //enum as parameter
    {
        super(modelArg, dimenstion);
        // Here we set field value
        this.voltate = voltage;
    }
  ...

你能不能也添加Phone的类定义?你能不能也添加Phone的类定义?非常感谢!虽然现在我觉得特别傻哈哈。我正在阅读一个UML图,但我没有看到关联箭头上的-电压,所以我试着按照这一点到一个t。非常感谢!虽然现在我觉得特别傻哈哈。我正在阅读一个UML图,但我没有看到关联箭头上的-电压,所以我试着按照这一点到一个t。