相关疑难解决方法(0)

在Java中,类静态中的枚举类型是什么?

我似乎无法从枚举中访问周围类的实例成员,因为我可以从内部类中访问.这是否意味着枚举是静态的?是否可以访问周围类的实例的范围,或者我是否必须将实例传递到我需要它的枚举方法中?

public class Universe {
    public final int theAnswer;

    public enum Planet {
        // ...
        EARTH(...);
        // ...

        // ... constructor etc.

        public int deepThought() {
            // -> "No enclosing instance of type 'Universe' is accessible in this scope"
            return Universe.this.theAnswer;
        }
    }

    public Universe(int locallyUniversalAnswer) {
        this.theAnswer = locallyUniversalAnswer;
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums scope

118
推荐指数
2
解决办法
7万
查看次数

枚举和最终变量有什么区别?

我正在尝试阅读枚举以更好地理解它们.

从枚举的javadocs我得到以下内容:

枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量.

对我来说,这听起来很像一个final变量.

  1. 真正的区别是什么?
  2. 你什么时候用一个而不是另一个?
  3. 枚举只是一个可以成为一组事物的最终变量吗?

java enums

5
推荐指数
2
解决办法
9591
查看次数

从枚举中访问超类变量

有没有办法在枚举本身内设置枚举父/超类中保存的变量?(以下不编译,但说明了我试图实现的目标)....

class MyClass{

    ObjectType type;        
    String someValue;


    public void setType(ObjectType thisType){

        type = thisType;

    } 

    enum ObjectType {

        ball{
            @Override
            public void setValue(){
                someValue = "This is a ball";  //Some value isn't accessible from here
            }
        },
        bat{
            @Override
            public void setValue(){
                someValue = "This is a bat";  //Some value isn't accessible from here
            }
        },

        net{
            @Override
            public void setValue(){
                someValue  = "This is a net";  //Some value isn't accessible from here
            }
        };

        public abstract void setValue();
    } …
Run Code Online (Sandbox Code Playgroud)

java enums enumeration object

0
推荐指数
1
解决办法
159
查看次数

标签 统计

enums ×3

java ×3

enumeration ×1

object ×1

scope ×1