[Java] Klasa dziedzicząca po klasie pochodzącej z refleksji
Ostatnio zmodyfikowano 2014-07-31 22:02
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. |
|
Elaine |
» 2014-07-31 19:46:34 Dlaczego wydaje ci się, że tego potrzebujesz? Co chcesz zrobić? |
|
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. |
|
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. |
|
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. |
|
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ą? |
|
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. |
|
« 1 » |