Это относится к языку Java.Может ли метод узнать тип объекта, который его вызывает (т. Е. Подтип, который его вызывает)
Предположим, у нас есть суперкласс A и подклассы X и Y. У меня есть метод в A, который должен знать тип X и Y (это внешняя библиотека).
У меня есть метод на A, называемый someMethod()
. Мой вопрос: в реализации someMethod()
есть способ узнать, называется ли он X или Y?
Пожалуйста, дайте мне знать, если это неясно.
EDIT^2:
Конкретная ситуация в классе А выглядит следующим образом.
public void delete() {
Datastore ds = Dao.instance().getDatabase();
ds.delete(this.getClass(),this.id);
}
, и я хотел бы быть в состоянии сделать X.delete() и Y.delete()
Зачем вам нужно знать тип? Если поведение отличается, тогда пишите разные реализации '' someMethod() '' в '' X'' и '' Y''. –
Я использую библиотеку Morphia с Mongodb. Он должен знать тип класса, чтобы он мог получить правильные данные. Однако в идеале я хотел бы иметь суперкласс, называемый Model, который имеет метод read(), чтобы затем я мог вызвать MyObject.read(), и он читается. Но я сделал то, что вы предлагаете. – Ankur
Нет, и это не должно. Это называется «государственная ориентация», и это считается крайне плохой проектной практикой. Если вы хотите, чтобы метод делал что-то другое, передайте другой параметр или напишите другой метод. – EJP