Софтуерно Инженерство
Loading...
+ Нов въпрос
lapd87 avatar lapd87 98 Точки

How to get entity by parameter name for different classes

Здравейте колеги,

имам идея да си рефакторирам кода за да нямам повторения. Идеята е на MeTube да изкарам в отделен клас вземането на entity по параметър, т.е. независимо дали е потребител или видео и независимо дали е по id, име или друго.

това е идеята за класът който искам да подкарам, но не знам как :)

https://pastebin.com/fwnrHSxt

Моля за съдействие какво/как да рефакторирам за да работи. Идеята е да го викам във всеки метод например:

@Override
public Optional<Tube> findById(String id) {
    return getEntityByParameter(id, "id", this.entityManager, Tube.class);
}
0
Java Web Development Basics
MartinBG avatar MartinBG 1152 Точки
Best Answer

Първото, което виждам като проблем, е че в сигнатурата на метода очакваш да получиш някакъв клас:

Class<T> aClass

Съответно и като го викаш му го подаваш (Tube.class):

return getEntityByParameter(id, "id", this.entityManager, Tube.class);

Но в тялото на метода отново се опитваш да вземеш класа, което най-вероятно ти хвърля компилационна грешка:

...
.createQuery(aClass.getClass());

Това ще работи, ако aClass е инстанция на някакъв обект. Използвай aClass директно, без .getClass().

 

Ретърн типа е известен (T): Optional<Т>.

? (или Optional<?>) е много общо и не е добра практика да се ползва без нужда.

Все едно да напишеш:

public Object getМyName() {
   return "Pesho";
}

 

1
12/02/2019 12:14:49