Aktywne Wpisy

Co sądzicie o tym filmie?
Mam k---a mieszane uczucia, do 3/4 gdzieś jest naprawdę dobry, dobrze zagrany, z ciekawą fabułą, ale ta końcówka wygląda jakby gość co wyreżyserował właśnie to 3/4 filmu, umarł i na dokończenie zatrudnili jakiegoś amatora za najniższą krajową
Rozumiem przesłanie itp, ale można było to pokazać lepiej
#film #filmnawieczor #filmy
Mam k---a mieszane uczucia, do 3/4 gdzieś jest naprawdę dobry, dobrze zagrany, z ciekawą fabułą, ale ta końcówka wygląda jakby gość co wyreżyserował właśnie to 3/4 filmu, umarł i na dokończenie zatrudnili jakiegoś amatora za najniższą krajową
Rozumiem przesłanie itp, ale można było to pokazać lepiej
#film #filmnawieczor #filmy
źródło: 1000002629
Pobierz
monter_wolter +292
źródło: GsXYsWJXgAAPMah
Pobierz




class A extends Z {}class B extends Z {}
class C extends Z {}
void m1 (A a);void m1 (B b);
void m1 (C c);
Mam obiekt
ztypuZktóry może byćABlubC. Nie wiem jakiego będzie typu. Jak najsprawniej zrzutować ten obiekt do typu pierwotnego i przekazać go do metody m1? Potrójny IF gdzie będę po kolei sprawdzałinstanceofi wtedy rzutował na właściwy typ? A może stworzyć 3 metodym1-A,m1-B,m1-Ci dynamicznie konstruować nazwę właściwej metody na zasadzie"m1-" + z.getClass().getName()i przy użyciu refleksji wywołać taką metodę?Może jest jeszcze jakiś lepszy sposób?
#java #programowanie
Parserzwraca miExpressionktóre złożone jest z obiektów z ostatniej linii. Wszystkie te obiekty w czasie parsowania są zapisywane do zmiennejExpression exwięc dostają typ bazowy. Musi tak być, bo nie wiem co konkretnie zwróci parser, to może być każdy z obiektów.Próbuję zaimplementować na tym wzorzec Visitor który będzie rekurencyjnie analizować
Expression. Z uwagi naźródło: comment_LDENNBj5uxCyOdhNWHGBHdWZx2Dy8qVI.jpg
PobierzExpressionuczynić interfejsem który byłby implementowany przezOperationiConstant. Ale czy taka struktura miałaby sens? Chyba że do obecnej struktury dodać jakikolwiek interfejs jako work-around, który wykorzystałbym tylko w Parserze to definiowania typu zmiennej. Tylko jak go nazwać, żeby kod miał ręce i nogi?interface Result {}?interface Expression {
void visit(ExpressionVisitor ev);
@tell_me_more: Napisałem wyżej, że
Negation,Differenceitd nie udostępniają tych samych metod, więc nie wystarczyvisit(Expression e)bo stąd nie będę mógł dobrać się do metod w tych obiektach. Wszystkie klasy muszą mieć wspólny typ bazowy albo interfejs, bo parser może zwracać każdy z powyższych@Matt23: Ale visitor zna konkretną implementacje, tak jak napisał @Kresse
W każdym razie co ma robić metoda m1 ? Dlaczego nie może przyjmować jako parametru argumentu typu Z ?
@Koryntiusz: Przy zastosowaniu interfejsu problemu nie ma, napisałem przecież, że zdaję sobie z tego sprawę.
Negationjest przechowywany w zmiennej typuExpression? Nadal muszę rzutować aby wywołaćvoid visit(Negation expression).Nie wiem dlaczego, ale ubzdurało mi się, że nadanie zmiennej typu interfejsowego cokolwiek zmieni. Myślałem, że problem jest rozwiązany, a tu nadal nic. Pozostała mi albo sekwencja
visitor.visit(this), to wywolasz konkretna wersje metody visit dla tej podklasy.@Matt23: Nie rozumiem czemu musisz rzutować. Obiekt zna swój typ i wywoła odpowiednią metodę wizytora.
Expressionjako klasy bazowej. Dzięki za pomoc.