Есть ли способ клонировать объект Java в суперкласский объект?JAVA

Программисты JAVA общаются здесь
Anonymous
Есть ли способ клонировать объект Java в суперкласский объект?

Сообщение Anonymous »

У меня есть приложение JSF, в котором есть объект «Настройки» , который раньше был @ApplicationsCoped , но меняется на @SessionCoped , поскольку приложение расширяется для поддержки пользователей, которым нужны разные настройки . Объект суперкласса настроек требуется методом, который работает в потоке. Когда настройки были @applicationscoped , он работал нормально, чтобы просто передать (The) настройки объект метода запуска потока, потому что это был синглтон. Однако это больше не работает, потому что поток выполняется вне контекста сеанса. Что я хотел бы сделать, так это создать экземпляр суперкласса настроек , который является клоном настроек , поскольку методы и элементы данных определяются этим SuperClass. Тем не менее, я не знаю, что клон () (или собственный код, стоящий за ним) может использоваться таким образом. (Мне нужна только мелкая копия.) То, что я хотел бы сделать, в (несколько) псевдокоде, является следующим: < /p>
public class SettingsBase
{
int dataMember1;
...
}

@SessionScoped
public class Settings extends SettingsBase implements Serializable
{
int appDataMember1;
}

Settings settings = new Settings();
SettingsBase baseSettings = (SettingsBase)settings.clone( );
assert !(baseSettings instanceof Settings);

Если я не смогу сделать это, мне придется добавить метод в настройки, который копирует все члены данных (30+) в новый экземпляр класса, например, ниже, которого я надеялся избежать:
public static SettingsBase cloneFrom( SettingsBase settings )
{
SettingsBase newSettings = new SettingsBase();
newSettings.dataMember1 = settings.dataMember1;
newSettings.dataMember2 = settings.dataMember2;
...
return( newSettings );
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... ass-object

Вернуться в «JAVA»