Чтобы ограничить область видимости, вы должны использовать своего рода аннотацию класса или модификатор класса, а виртуальной машине нужна функциональность, чтобы проверить, был ли класс (или любой подкласс этого ограниченного класса) назначен члену или локальной переменной и нарушен ограничение.
Только представьте, у вас есть класс с - только что изобретенным - модификатором onlylocal, указывающим, что вы допускаете только экземпляры в локальных переменных.
public onlylocal class LocalUseOnlyClass implements Serializable {
//...
}
и в другом классе кто-то только что сделал в конструкторе:
private Object member;
public MyOtherClass(Serializable something) {
this.member = something
}
Компилятор не может обнаружить, если вы передали экземпляр LocalUseOnlyClass этому конструктору, поэтому JVM должна была проверить и выдать исключение или ошибку.
Кстати: каково ваше намерение? - может быть, есть альтернатива для выполнения вашего основного требования.