Aktywne Wpisy
Jak sądzicie, co będzie kolejnym małym przełomem w następnych generacjach telefonów tak jak w ostatnich latach 5G(ok w PL mamy ciągle NSA ale SA to przepaść), ładowanie indukcyjne, ESIM, 120Hz, czytnik linii papilarnych pod ekranem.
#telefony #technologia #elektronika #iphone #pytanie #pytaniedoeksperta
#telefony #technologia #elektronika #iphone #pytanie #pytaniedoeksperta






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ę.
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.