Aktywne Wpisy
WykopX +943
#afera TL;DR Wykop łamie regulamin wykopu i wykopuje na główną #ama OVH z 4-letnich fake-kont. Pytania w AMA zadawane przez fake-konta z ostatnią aktywnością w 2020.
Zauważyłem ciekawą rzecz - AMA z pracownikiem OVHcloud (aktualnie ledwo 40 wykopów i jest już wykopane na głównej) wykopały 4-letnie i 3-letnie konta bez ŻADNEJ aktywności od 2020 roku.
Pytania zadawane w AMA - dziwnym przypadkiem od kont, których ostatnia aktywność była 4
Zauważyłem ciekawą rzecz - AMA z pracownikiem OVHcloud (aktualnie ledwo 40 wykopów i jest już wykopane na głównej) wykopały 4-letnie i 3-letnie konta bez ŻADNEJ aktywności od 2020 roku.
Pytania zadawane w AMA - dziwnym przypadkiem od kont, których ostatnia aktywność była 4
Krupier +206
Przegiolem co?
Podwójny Grander. Własne bułki, kurczak, boczek, ser, sałata, czerwona cebula, pomidor sosy barbecue i majonez ze skyrem.
#krupgotuje #gotujzwykopem #gotujzmikroblogiem #gotowanie #jedzenie #foodporn #przegiolemco
Podwójny Grander. Własne bułki, kurczak, boczek, ser, sałata, czerwona cebula, pomidor sosy barbecue i majonez ze skyrem.
#krupgotuje #gotujzwykopem #gotujzmikroblogiem #gotowanie #jedzenie #foodporn #przegiolemco
Dobra dzisiaj już raz pisałem to napiszę jeszcze raz.
Piszę projekcik na studia i stwierdziłem że jest fajna okazja żeby ogarnąć refleksję. Bo czemu nie.
No i sytuacja przedstawia się następnująco.
Mam taką ścieżkę dziedziczenia po klasach:
Creature -> Animal -> Wolf.
Powiedzmy że gdzieś w jakiejś klasie chcę utworzyć sobie nową instancję tego wilka z tym, że nie wiem o tym że to jest wilk.
Metoda wygląda tak:
public void addCreature(int x, int y, Creature c)
I tutaj trochę przeszukując stack'a wymodziłem coś takiego:
Creature newCreature = (Creature) Class.forName(c.getClass().getName()).getConstructor(c.getClass()).newInstance(x, y, this);
Akurat to ma być wywoływane w klasie World, dlatego jest 'this'.
Konstruktor wilka wygląda następująco (nie ma dodatkowych):
public Wolf(int x, int y, World world)
Wywołując kod który wkleiłem wyżej dostaję wyjątek że nie znalazł takiej metody:
java.lang.NoSuchMethodException: com.m.VirtualWorld.Animals.Player.(com.m.VirtualWorld.Animals.Player)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
I wyrzuca ten wyjątek właśnie przy Creature newCreature = ....;
Wszystko co googluję sprowadza właśnie do takiej postaci tworzenie nowych obiektów, dlatego strzelam że coś pomieszałem w argumentach dla metod .forName() albo .getConstructor();
Ktoś/coś jest w stanie podpowiedzieć?
#java #programowanie #refleksja
Ja mogę coś podpowiedzieć.
Po jaką cholerę używasz refleksji tutaj?!
Tego się używa tylko wtedy, gdy trzeba (zwykle nie trzeba), a nie a bo se użyję, bo tak.
Jakby mi jakiś student przyniósł projekt z refleksją z d--y to by dostał 2.0 z miejsca.
Komentarz usunięty przez autora
@tell_me_more: Nie jestem pewien, ale gdyby to zadziałało tak jak chcę to oszczędziłoby mi odrobiny kodu.
@Wyrewolwerowanyrewolwer: Jeśli refleksja zaoszczędzi Ci kodu, to znaczy, że design masz do d--y.
Wytłumacz dlaczego uważasz, że potrzebujesz refleksji, to coś może coś zaradzimy .:)
Ale używanie refleksji jest z wielu powodów złe - nieczytelny kod, dużo wolniej działa, wprowadza nieoczywiste zależności, uniemożliwia IDE (eclipsowi czy czego tam używasz) poprawne parsowanie kodu (bo nie wiadomo, jaka metoda jest wołana, więc call graph np. nie zadziała).
Ogólnie to refleksje to ostateczność.
Mam w świecie kontener wszystkich organizmów które są w nim obecne. Organizmy mogą się rozmnażać, ale nie mogę ich tak po prostu dodać do jednej listy bo każdy z nich ma swój priorytet według którego jest przydzielany do odpowiedniej listy.
Do tego organizmy na świecie mogą się rozmnażać, a akcje niektórych są domyślnie takie same dlatego metoda akcji jest przerzucona do klasy nadrzędnej (powiedzmy Animal dla każdego zwierzęcia) i
@Wyrewolwerowanyrewolwer: Możesz to rozwinąć?
Możliwe nawet, że metoda Object.clone() Ci się przyda, ale to zależy.
Organizmy mają to do siebie że niektóre są ważniejsze niż reszta i akcje organizmów nie są wywoływane po prostu w kolejności dodania do świata tylko według tego priorytetu. Np. A jest ważniejsze(ma wyższy priorytet) niż B, dlatego wywołanie:
B.akcja();
A.akcja();
Jest błędne, ponieważ poprawną kolejnością jest
A.akcja();
B.akcja();
Map>, albo Multimap z guavy.
Jak już wyżej pisałem, Jeśli refleksja zaoszczędzi Ci kodu, to znaczy, że design masz do d--y.
I tak szczerze mówiąc to nie wiem jak refleksja niby ma rozwiązać problem sortowania i priorytetów...
@tell_me_more: No ok, dzięki.
No i ja popełniam chyba wszelkie możliwe błędy designerskie jeżeli chodzi o tworzenie gier, także jakby ktoś ogarnięty spojrzał na kod to ręce opadają ( ͡° ͜ʖ ͡°)