Как обеспечить неизменность параметров типа
class Pair<A,B> {
final A first;
final B sec;
Pair(A f, B s){
this.first = f;
this.sec = s;
}
}
Есть ли способ гарантировать, что A и B являются неизменяемыми типами?
2 ответа
Решение
Нет. Нет способа идентифицировать, не говоря уже о привязке, тип как неизменный.
Вы можете создать интерфейс маркера (один без методов, как Serializable
), который используется в вашем проекте для определения неизменяемых классов, и ваша команда должна его придерживаться.
Например:
interface Immutable {}
class Pair<A extends Immutable, B extends Immutable> {
}
Нет. На самом деле в языке вообще нет концепций, "изменчивых" или "неизменяемых" типов. "Неизменяемый" - это просто термин, который мы используем для описания типа, который не предлагает никаких методов или открытых полей, которые позволяют вам изменять любое внутреннее состояние. Кроме этого, нет никакой разницы между тем, как работают "изменяемые" и "неизменяемые" типы.