Дженерики в Java, как правило, более мощные, чем в C #.
Если вы хотите построить объект, но без аппаратного конструктора / статического метода, используйте абстрактную фабрику. Вы должны иметь возможность находить подробную информацию и учебные пособия по шаблону абстрактной фабрики в любой базовой книге шаблонов дизайна, введении в ООП или во всех средах. Здесь не стоит дублировать код, кроме упоминания о том, что синтаксис закрытия Java засасывает.
IIRC, C # имеет специальный случай для указания, что общий тип имеет конструктор no-args. Эта нерегулярность, по определению, предполагает, что клиентский код хочет использовать эту конкретную форму построения и поощряет изменчивость.
Использование отражения для этого просто неверно. Генераторы в Java - это функция статического ввода времени компиляции. Попытки использовать их во время выполнения - это четкое указание на то, что что-то происходит не так. Отражение вызывает подробный код, ошибки выполнения, необработанные зависимости и уязвимости безопасности. (Class.forName
особенно злой.)
Вы можете использовать геттеры и сеттеры для достижения этого, что на самом деле очень близко к тому, что у вас уже есть:
private _myDate;
set myDate(myNewDate){
this._myDate = convertDateToTimestamp(myNewDate)
}
get myDate(){
return convertTimestampToDate(this._myDate)
}
Вы можете вызвать getTime () для этого объекта даты, чтобы получить его в форме unix. Он появляется в миллисекундах.
new Date("2013/09/05 15:34:00").getTime();
Он может иметь десятичные биты, поэтому его перенос в Math.round очистит это.
Math.round(new Date("2013/09/05 15:34:00").getTime());