Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Java] Klasa dziedzicząca po klasie pochodzącej z refleksji

Ostatnio zmodyfikowano 2014-07-31 22:02
Autor Wiadomość
Chlorek
Temat założony przez niniejszego użytkownika
[Java] Klasa dziedzicząca po klasie pochodzącej z refleksji
» 2014-07-31 19:37:26
Problem jak w temacie. Zobrazuję to takim pseudo-kodem:

class A extends Class.forName("B")
Oczywiście nie można dziedziczyć w ten sposób, a bez tego mój projekt dosłownie leży. Chcę też podkreślić, że nie ma opcji bym użył edytorów bytecode'u.
P-114790
Elaine
» 2014-07-31 19:46:34
Dlaczego wydaje ci się, że tego potrzebujesz? Co chcesz zrobić?
P-114791
PsichiX
» 2014-07-31 19:49:27
Kolega chce się winjectować w inną klasę, do której "nie ma dostępu" podczas compile-time. Jeśli znasz interfejs tej klasy, zrób je wrappera, który będzie operował na injectowanej klasie poprzez refleksję. Oczywiście to najwolniejsze możliwe rozwiązanie, ale zadziałać powinno.
P-114792
Chlorek
Temat założony przez niniejszego użytkownika
» 2014-07-31 20:05:12
@PsichiX
Nie jestem pewny czy dobrze rozumiem. Chodzi o to bym utworzył drugą klasę, o podobnej strukturze, która wywołuje odpowiadające metody z "odbitej" klasy i to właśnie z niej dziedziczyć? Jeśli tak to przyznaję, że pomysł ciekawy.
Mam wątpliwość jednak czy zadziała to w moim przypadku. Problem polega na tym, że cały kod jest o wiele bardziej złożony i utworzoną klasę w ten sposób poza wykorzystaniem do swoich celów (wywołania we własnej części programu) muszę potem podać obiekt takiej klasy "dalej" do wykorzystania przez część programu do której nie mam dostępu. Oznacza to że musiałbym utworzyć idealną kopię odbijanej klasy...

#Edit
Do tego dochodzi jeszcze to, że kod klasy jest zaciemniany.
P-114793
PsichiX
» 2014-07-31 21:16:37
jesli kod jest zaciemniany, to sposob "Class.GetByName()" nie przejdzie, bo musialbys znac nazwe klasy tuz po zaciemnieniu.
P-114798
Chlorek
Temat założony przez niniejszego użytkownika
» 2014-07-31 21:43:42
Znam nazwe po zaciemnianiu, to nie jest problem. Gorzej tylko że program do którego piszę jest update'owany BARDZO często przez co niemal ciągle otrzymuje inne nazwy plików. Jakieś pomysły? Właśnie to co chcę osiągnąć jest po to by zrobić version-independant dodatek do tej nie mojego autorstwa aplikacji. Wszystko byłoby fajnie (bo nawet zaciemnione mogę wywołać jak normalne API), gdyby nie to że w nazwach package'y jest tzw. safe-guard, czyli wstawiana jest aktualna wersja programu, więc jest coś takiego:
org.dadasdasd.1_5_6.klasa

Ewentualnie jakieś inne pomysły jak ominąć to zabezpieczenie i zrobić mój program tak by działał z każdą wersją?
P-114800
pekfos
» 2014-07-31 22:02:30
Jeśli program, do którego chcesz napisać 'dodatek' jest zabezpieczony przed takim działaniem, to tu ten temat się kończy. Nie udzielamy informacji na temat ingerowania w aplikacje trzecie.
P-114804
« 1 »
  Strona 1 z 1