Рассмотрим следующий фрагмент кода:Оператор присваивания и «это» ключевое слово
class Parent {
Parent() {
this = new Child();
}
}
class Child extends Parent { }
выше будет бросать синтаксическую ошибку: The left hand side of an assignment operator must be a variable
В Яве this
ключевое слово хранит адрес памяти текущего вызова объект. Я хочу перезаписать текущий объект экземпляром подкласса класса. Я понимаю, что вышеприведенный фрагмент порождает ошибку, так как this
не является переменной и, вероятно, неизменен.
Однако, я хочу знать, почему Java не позволяет использовать эту функцию выше? Есть ли недостаток?
EDIT: Этот вопрос возник со ссылкой на контекст обработки естественного языка (NLP). Например, на французском языке каждый глагол должен заканчиваться словами «er», «ir» или «re». Все глаголы имеют некоторые общие черты. Однако каждый глагол должен быть либо одним из трех типов, упомянутых выше. Поэтому в конструкторе родительского класса «Глагол» я хочу классифицировать объект, созданный как «ErVerb», «IrVerb» или «ReVerb».
Это не имеет смысла, и даже если этот конкретный код будет работать, он выкинет исключение StackOverflowException. –
Как класс знает, что это подкласс? который еще предстоит родиться? : P – Anil
Что именно вы хотите достичь? – MinecraftShamrock