Вынудите отношения от метки узла X к метке узла Y, чтобы иметь определенные свойства

Проблема заключается в том, что K является типом, который расширяет Number, но это неизвестный подкласс класса Number, поэтому компилятор вызывает эту ошибку, поскольку Integer - это только один конкретный подкласс из Number, поэтому он не может сравниться с любыми потенциальными целевыми типами.

Предположим, что вы хотите явно указать его, чтобы скомпилировать его с помощью

public <K extends Number> K getValue(){
    Integer a = new Integer(1);
    return (K) a;
}

. Тогда, если вы его вызываете ожидая, что какой-либо подкласс класса Number, кроме Integer, вы получите ClassCastException, именно этого компилятор хочет избежать:

Double d = getValue(); <-- throws ClassCastException

В качестве обходного пути вы можете определить свой метод, используя Number как возвращаемый тип следующим образом:

public Number getValue() {
    return new Integer(1);
}
0
задан Telmo Trooper 28 March 2019 в 04:11
поделиться

1 ответ

К сожалению, в настоящее время невозможно достичь этого эффекта на уровне схемы.

Вы должны понять, как реализовать это на прикладном уровне.

Если это отношение LIKED отличается от других отношений LIKED (т. е. отношения LIKED между парой меток других узлов), тогда вы можете назвать его как угодно и создать «ограничение существования свойства отношения» [115 ] на это.

0
ответ дан Raj 28 March 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: