powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как из метода класса вернуть новый объект такого же типа?
14 сообщений из 14, страница 1 из 1
Как из метода класса вернуть новый объект такого же типа?
    #37985881
omickron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раньше я писал в Delphi. Там это делается так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
  TMyClass = class
    function createInstance: TMyClass;
  end;
  TMyClassType = class of TMyClass;

function TMyClass.createInstance: TMyClass;
var
  aType: TMyClassType;
begin
  aType := TMyClassType(ClassType);
  Result := aType.Create;
end;



А как это же самое сделать в Java?
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37985889
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
public static TMyClassType createInstance(){
	TMyClassType instance = new TMyClassType()
	return instance;
}
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37985896
omickron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лагман,
Капитан Очевидность, это вы?

А если этот метод вызывает не MyClassType, а его наследник - NewClassType?
Ваш код создаст объект типа MyClassType. А нужно, чтоб создался NewClassType.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37985901
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
omickronА как это же самое сделать в Java?Рефлексия?
Это если оставаться на капитанском мостике.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37985941
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
omickronА если... Гуглить: "Параметризованные методы"
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37986058
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС больше подойдет сисярп, там женерики вроде можно инстанциировать.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37986089
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нужно классу самому себя рожать))
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37987190
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
omickronРаньше я писал в Delphi. Там это делается так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
  TMyClass = class
    function createInstance: TMyClass;
  end;
  TMyClassType = class of TMyClass;

function TMyClass.createInstance: TMyClass;
var
  aType: TMyClassType;
begin
  aType := TMyClassType(ClassType);
  Result := aType.Create;
end;



А как это же самое сделать в Java?

Всегда можно сделать все через опу, но зачем?
1) Вариант 1, через опу, кривой, косой и нельзя так делать.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
abstract class Parent<K> {
   K createNewIns() {
      return (K) ((Class)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]).newInstance();
   }
}

Child extends Parent<LOLWHAT> {
   public LOLWHAT createLOLWHAT() {
    return createNewIns();   
   } 
}



Ну там обработка ошибок и все такое ;) Но работает только для parent`ов и тд ;)

2) Вариант как бе корректный, там применить в каком нить щаблоне типа factory или просто ...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
interface MyClass {
 MyClass  createInst();  
}

abstract class Parent<K extends MyClass> {
      final K inst;
      public Parent(K myClass) {
        inst = myClass.createInst();
      }
}
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37987240
omickron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Озверин,

Спасибо за примеры.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37987242
omickron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Почему вы считаете, что не нужно классу самому себя рожать?
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37988425
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При наличии spring можно объявить бин со скопом prototype и вынимать его из контекста, например.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37988433
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Называется авторефферентный класс. Вообще-то - классика жанра. Хотя, может я чего не понял.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37988496
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeНазывается авторефферентный класс. Вообще-то - классика жанра. Хотя, может я чего не понял.

Я слово понимаю, классики не знаю..гугл сдался.
...
Рейтинг: 0 / 0
Как из метода класса вернуть новый объект такого же типа?
    #37990016
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
omickronPetro123,
Почему вы считаете, что не нужно классу самому себя рожать?
потому что по классике, родитель-код рожает объект-распределяет память, следит за временем его жизни. И уничтожает.

родил
try
использую
final
уничтожил

НО всегда можно найти задачу под хотелку программиста.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как из метода класса вернуть новый объект такого же типа?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]