Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Generic и анонимный класс / 9 сообщений из 9, страница 1 из 1
16.09.2016, 19:18
    #39310574
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
Пытаюсь в command pattern передать на выполнение класс и внутри execute использовать его.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
interface ExecuteCommand<T> {
	void execute(T mapperClass);
}

public class ExecuteCommandImpl<T> implements ExecuteCommand<T> {
	private Class<T> type;

	public ExecuteCommandImpl(Class<T> type) {
		this.type = type;
	}
	public void execute(T mapperClass) {

	}
	public Class<T> getClassType() {
		return this.type;
	}
}


Здесь я выполняю обёрточный код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	public void runCommand(ExecuteCommandImpl action) {
		SqlSession session = sf.openSession();
		try {
			action.execute(session.getMapper(action.getClassType()) );
		} finally {
			session.close();
		}

	}



Долее хочу вызвать в наследнике runCommand и передать ему анонимный класс. Вот тут не знаю как правильно написать.
Код: java
1.
2.
3.
4.
5.
6.
		runCommand(new ExecuteCommandImpl<LocationMapperExt>() {
			@Override
			public void execute(T mapper) {
				List<Location> records = mapper.getLocationsHierarchy(0L);
				assertNotNull(records);
		});


Не понимаю как maper должен принять тип LocationMapperExt?
...
Рейтинг: 0 / 0
16.09.2016, 19:26
    #39310582
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
ErikI,

Вы же конкретизировали генерик тип в анонимном классе в ExecuteCommandImpl. Соответственно метод будет
Код: java
1.
public void execute(ExecuteCommandImpl  mapper) {
...
Рейтинг: 0 / 0
16.09.2016, 20:10
    #39310610
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
Не получается получить mapper типа LocationMapperExt. Соответственно mapper ничего не знает о методе getLocationsHierarchy
...
Рейтинг: 0 / 0
16.09.2016, 20:13
    #39310611
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
ExecuteCommandImpl это реально существующий класс и @Override не получается.
...
Рейтинг: 0 / 0
16.09.2016, 20:24
    #39310620
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
Вам компилятор так и пишет "у меня не получилось, попробуйте что-нибудь ещё"?
...
Рейтинг: 0 / 0
16.09.2016, 20:34
    #39310628
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
Я понимаю, что неверен подход. Но как мне передать на выполнение код. Началось с кого что сделал 10 почти одинаковых методов.
Пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
	@Test
	public void generateFullLocation() throws Exception {
		SqlSession session = sf.openSession();
		com.epl.dao.LocationMapperExt mapper = session.getMapper(com.epl.dao.LocationMapperExt.class);

		try {
			LocationFullPathDTO records = mapper.generateFullLocation(10000000001L);
			assertNotNull(records);
		} finally {
			session.close();
		}
	}

	@Test
	public void selectLocationBySearchParams() throws Exception {
		SqlSession session = sf.openSession();
		com.epl.dao.LocationMapperExt mapper = session.getMapper(com.epl.dao.LocationMapperExt.class);

		try {
			LocationSearchParams searchParams = new LocationSearchParams();
			List<LocationDTO> records = mapper.selectLocationBySearchParams(searchParams);
			assertNotNull(records);
		} finally {
			session.close();
		}
	}


Посоветуйте что нибудь?
...
Рейтинг: 0 / 0
16.09.2016, 20:36
    #39310629
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
ErikI,

У вас конструктор объявлен так
Код: java
1.
public ExecuteCommandImpl(Class<T> type) 


Но вызываете вы его так

Код: java
1.
new ExecuteCommandImpl<LocationMapperExt>() 


Куда аргумент потерялся?
...
Рейтинг: 0 / 0
16.09.2016, 20:47
    #39310634
ErikI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
Да и конструктор мешать будет. Вообщем плохая идея для реализации. Надо менять. Есть идеи?
...
Рейтинг: 0 / 0
16.09.2016, 22:44
    #39310677
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Generic и анонимный класс
ErikI Есть идеи?
Код похож на паттерн ради паттерна. Выкинуть. Решать проблему, а не натягивать на патернны.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Generic и анонимный класс / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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