Переопределение оператора присваивания
Существует ли такая вещь на Яве? Например, я всегда могу сделать что-то вроде:
AJSDate startDate = new AJSDate("20090811");но я бы предпочел, чтобы он был как:
AJSDate startDate = "20090811";
AJSDate startDate = new AJSDate("20090811");но я бы предпочел, чтобы он был как:
AJSDate startDate = "20090811";
Java на самом деле не работает так, как Javascript, хотя недавние изменения, внесенные Java 10 и выводом типа локальной переменной, могут немного помочь в этом. До Java 10 объекты были специально определены (Ах да, даже после Java 10) и интерпретированы, так что когда у вас есть
AJSDate startDate = new AJSDate("20090811");
AJSDate startDate = "20090811";
Неужели? Спросили и приняли ответ девять лет назад.
Нет, вы не можете сделать это на Java. Это был сознательный выбор Гослинга и др. поскольку одной из их первоначальных целей дизайна языка была простота и прозрачность: вы всегда должны знать, что делает код, просто глядя на него, без каких-либо "скрытых" эффектов. ("Простота" и Java, о, как изменился мир.)
Что вы можете сделать, так это настроить статический заводской метод, что-то вроде:
AJSDate startDate = AJSDate.valueOf("200090811");