Здравствуйте, ·, Вы писали:
S>>И вот тут и возникает некоторая проблема — как запретить порождать других наследников от Expression? В каком-нибудь дотнете это достигается package visibility для Expression.
·>А как package visibility позволит сделать exhaustiveness checking?
public class Expression {
internal Expression() {}
}
объявить наследника Expression в другой сборке конечно можно. Но так как создать экземпляр этого наследника всё равно нельзя будет создать, то и в pattern matching таких наследников можно не учитывать.