Определение перечисления в Java - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть класс в Java, описывающий параметр (имя: Param), и другой класс, в котором я объявляю и инициализирую около 100 таких параметров, как:


    private static final Param param_name_1 = new Param(x, y, z);

Я хотел бы поместить все эти объекты/ экземпляры в перечислении и инициализировать их там.Какой лучший способ сделать это?

=== ОБНОВЛЕНИЕ ===

Я попросил синтаксис перечисления, но не так.

В моем случаеParam - это еще один Java-класс, который имеет свои собственные параметры, методы получения и установки и конструктор с тремя параметрами между парантезами:

public Param(intx, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}

В моем другом классе я объявляю и инициализирую 100 экземпляров класса Param в том виде, как он написанвыше.Каждый x, y и z для каждого экземпляра различны.

И перечисление должно содержать объявление экземпляров и, возможно, также инициализировать их.

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

enum - это особый тип класса, поэтому вы можете объявлять конструкторы, поля и методы, а также реализовывать интерфейсы. Однако они не могут extend других классов.

В этом случае я бы предложил final полей и получателей, например:

public enum Param {

    PARAM_A(1, 2, 3), 
    PARAM_B(4, 5, 6), 
    PARAM_C(1, 3, 5);

    private final int x;
    private final int y;
    private final int z;

    private Param(int x, int y, int z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public int getZ() {
        return z;
    }
}
3 голосов
/ 02 ноября 2011

Предполагая, что вы спрашиваете о синтаксисе enum, вы можете сделать что-то вроде этого (предполагая, что x, y и z являются константами времени компиляции).

 public enum Param {
    param_name_1(1,2,3),
    param_name_2(3,4,5);

    private int x;
    private int y;
    private int z;

    private Param(int x, int y, int z) {
       this.x=x;
       this.y=y;
       this.z=z;
    }
 }
1 голос
/ 02 ноября 2011

Я думаю, это то, что вы хотите

class Param
{
        private int x, y, z;
        public Param(int x, int y, int z)
        {
                this.x = x; this.y = y; this.z = z;
        }
}

public class t
{

        private enum ParamVals
        {
                VAL1(new Param(0,0,0)),
                VAL2(new Param(1,1,1));

                private Param paramVal;

                private ParamVals(Param paramVal)
                {
                        this.paramVal = paramVal;
                }

                public Param getVal()
                {
                        return paramVal;
                }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...