Re[8]: Обязательный именованный параметр с проверкой при ком
От: sergii.p  
Дата: 26.07.23 12:31
Оценка:
Здравствуйте, ·, Вы писали:

·>Предложи конструктивно как переписать правильно, чтобы ошибка была очевидна.


// Общая часть. Каждый раз переписывать не надо
class NewType<T> {
    T value;
    public T to_underlying() {
        return value;
    }
    public NewType(T obj) {
        this.value = obj;
    }
    // можно ещё переопределить методы toString, hashCode, кому надо
}

// Каждый тип объявлять немного многословно. Не хватает typedef конструкции в языке
class XType extends NewType<Integer> {
    XType(int val) { super(val); }
}

class YType extends NewType<Integer> {
    YType(int val) { super(val); }
}


class HelloWorld {
    static void print(XType x, YType y) {
        //...
    }
    
    public static void main(String[] args) {
        var x = new XType(3);
        var y = new YType(42);
        print(x, y);
        //print(y, x); //Error YType cannot be converted to XType
    }
}
Отредактировано 26.07.2023 12:36 sergii.p . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.