Sobes.tech
Назад к вопросам
Junior — Middle
65

Расскажите о вашем опыте использования конструкции union в программировании.

Компании, где спрашивали
Ви6 Сервисес

Ответ от нейросети

sobes.tech AI

В Java нет конструкции union, как в языках C или C++. Однако, похожий эффект можно достичь с помощью классов и наследования, либо используя классы-обертки с полями разных типов и контролируя, какое поле активно. Например, можно создать класс с несколькими полями и использовать только одно из них, но это не будет экономить память, как union.

Пример имитации union через класс с полями и enum для типа:

public class MyUnion {
    public enum Type { INT, STRING }
    private Type type;
    private int intValue;
    private String stringValue;

    public void setInt(int value) {
        intValue = value;
        type = Type.INT;
    }

    public void setString(String value) {
        stringValue = value;
        type = Type.STRING;
    }

    public Type getType() {
        return type;
    }

    public int getInt() {
        if (type != Type.INT) throw new IllegalStateException("Not an int");
        return intValue;
    }

    public String getString() {
        if (type != Type.STRING) throw new IllegalStateException("Not a string");
        return stringValue;
    }
}

Таким образом, в Java union не используется напрямую, а подобное поведение моделируется через классы и логику.