"Statik yakuniy bayt"

bayt kodi bilan bayt kodi ni ishlatish kerak. Quyidagi kabi e'lon qilingan static final sobit bor:

private static final byte[] X_CONST = {2};
private static final byte[] Y_CONST = {3};

Keyinchalik quyidagi hollarda foydalanishni xohlayman:

byte[] x={3};

switch (x[0]){
    case X_CONST[0]: ...; break;
    case Y_CONST[0]: ...; break;
}
4

4 javoblar

Jadvalning statik yakuni bo'lishi mumkin, ammo qatorning tarkibi emas. Shunday qilib, ishning bajarilish vaqtida qiymat o'zgarishi mumkinligi sababli kalitning qiymati sifatida ruxsat etilmaydi. Buning o'rniga maxsus statik yakuniy bayt X_CONST = 2 ni belgilang.

7
qo'shib qo'ydi
(sobit) bayt qabul qilinadi
qo'shib qo'ydi muallif Carlos Heuberger, manba

Sobitlarni bayt chiziqlari deb e'lon qildingiz. Kalit so'zlari qatorlar bilan ishlatilmaydi.

Quyidagi deklaratsiyani sinab ko'ring:

private static final byte X_CONST = 2;
private static final byte Y_CONST = 3;
3
qo'shib qo'ydi

Boshqa javoblar sizning kodingizdagi muammoni ko'rsatdi. Vaqtinchalik echim sifatida quyidagi kabi kalit so'zini ishlatish uchun enum yaratishingiz mumkin:

public enum MY_ENUM {
    X_CONST((byte)2),
    Y_CONST((byte)3);

    private final byte value;

    private MY_ENUM(byte value) {
        this.value = value;
    }

    public byte getValue() {
        return value;
    }

    public static MY_ENUM valueOf(byte b) {
        MY_ENUM[] values = MY_ENUM.values();
        for (int i = 0; i < values.length; i++) {
            if (values[i].getValue() == b) {
                return values[i];
            }
        }
        throw new IllegalArgumentException("Invalid input byte");
    }
}

...

public static void main(String[] args) {
    byte[] x={3};

    switch (MY_ENUM.valueOf(x[0])) {
        case X_CONST: ...; break;
        case Y_CONST: ...; break;
    }
}
1
qo'shib qo'ydi

Switch statement cannot be used with array.

Bir tugma bayt, qisqa, char va int ibtidoiy ma'lumotlar bilan ishlaydi   turlari. Bundan tashqari, numaralandırılmış turlari, string sinf va a bilan harakat qiladi   Ba'zi ibtidoiy turlarni o'z ichiga olgan bir necha maxsus sinflar: Belgilar,   Bayt, qisqacha va to'liq.

0
qo'shib qo'ydi