JAVA_SE_84 Piszemy własnego Spring'a
16:32
16 сағат бұрын
JAVA_SE_83 Metody w refleksji
8:36
14 күн бұрын
JAVA_SE_81 Pole w refleksji
7:00
2 ай бұрын
JAVA_SE_80 Typ vs Klasa
3:25
2 ай бұрын
JAVA_SE_77 Adnotacje
11:52
3 ай бұрын
JAVA_SE_73 Metody generyczne
8:11
JAVA_SE_72 Typy generyczne
10:35
4 ай бұрын
JAVA_SE_70 Handler
11:25
6 ай бұрын
JAVA_SE_69 klasy wewnętrzne
10:34
JAVA_SE_68 Klasy anonimowe
10:13
7 ай бұрын
JAVA_SE_64 modyfikator final
4:10
10 ай бұрын
JAVA_SE_62 Polimorfizm
10:44
10 ай бұрын
Jak przygotować dane testowe
4:54
JAVA_SE_61 Dziedziczenie
8:31
10 ай бұрын
JAVA_SE_59 Optional przegląd metod
19:56
Пікірлер
@januszkuznik137
@januszkuznik137 3 күн бұрын
Możesz podpowiedzieć mi więcej różnic i podobienst klasy abstrakcyjnej oraz interfejsu? Teoretycznie klasa abstrakcyjna która posiada tylko metody abstrakcyjne działa jak interfejs, interfejs od kiedy można definiować metody default ma podobne zachowanie jak klasa abstrakcyjna.. Różnice są w możliwości posiadania pol w klasie abstrakcyjnej co sprzyja zasadzie dry ale klasę abstrakcyjna się dziedziczy a interfejsy implementuje, a wiec może ich być kilka.. co jeszcze można by o tych strukturach powiedzieć?
@wrosoftacademy
@wrosoftacademy 2 күн бұрын
Bardzo dobrze to podsumowałeś, od strony technicznej to rzeczywiście interface za pomocą metod default może 'udawać' klasę abstrakcyjną, natomiast klasa abstrakcyjna może robić za interface. Należy pamiętać, że pola w inteface są jako stałe (public static final), a metod prywatnych nie możemy tworzyć. Można rozważyć różnice w ich przeznaczeniu, wówczas łatwiej będzie wybrać czego powinniśmy użyć. Klasa abstrakcyjna - użyjemy jej, kiedy będziemy chcieli użyć dziedziczenia, czyli mamy kilka klas, które dotyczą tego samego w różnych wariantach, np. TaskProcessor (różne typy zadań procesowane w różny sposób). Wówczas cały proces implementuje w klasie abstrakcyjnej, natomiast fragmenty procesu, które są różne w zależności od typu zadania, będą implementowane przez metody abstrakcyjne w klasach potomnych. Inteface - używam go jako API lub kontraktu np. pomiędzy domenami, czy innymi częściami naszej aplikacji. W ten sposób mam zapewniony kontrakt i wiem jak mogę z danego fragmentu skorzystać właśnie poprzez interface. Jeżeli mam jakąś metodę, która wszędzie lub prawie wszędzie będzie wyglądała tak samo, wówczas użyję default, jako domyślnej implementacji. Mam nadzieję, że rozjaśniłem nieco różnice. Z jednej strony mogą wyglądać bardzo podobnie, jak wspomniałeś, jednak z drugiej, są w nieco innych sytuacjach używane.
@januszkuznik137
@januszkuznik137 Күн бұрын
@@wrosoftacademy Tak, dzięki! Zwłaszcza podoba mi się stwierdzenie "używania interfejsu jako kontraktu"
@januszkuznik137
@januszkuznik137 3 күн бұрын
"Łoo Panie"
@Zentex2307
@Zentex2307 15 күн бұрын
jakie są przypadki, kiedy używanie refleksji ma sens ? Mówię o normalnej aplikacji, nie tworzymy biblioteki, ani nic co potrzebuje dostęp w locie do klas. Tworzymy aplikacje od podstaw, ma ona swoją architekturę, wszystko możemy zaplanować itd. W jakich przypadkach refleksje są przydatne ? Tylko gdy chcemy "obejść" coś np. skorzystać z metody prywatnej, manipulować wartościami pól itd.?? Szukam praktycznych zastosowań :)
@wrosoftacademy
@wrosoftacademy 15 күн бұрын
Jest to rzecz, z której często się nie korzysta ale czasem pozwala rozwiązać zgrabnie problem. Przykład z życia. Miałem aplikację, która łączyła się z ok 20 serwisami (innymi aplikacjami) w każdym zapytaniu trzeba było dodawać dane techniczne, typu nazwa mojej aplikacji, jako klient, login zalogowanego użytkownika, data utworzenia request itp, w sumie ok 10 pól. Problem w tym, że to był XML, więc klasy były generowane i nie miały między sobą dziedziczenia. W planach rozwojowych, miały dochodzić kolejne serwisy do obsługi. Znając nazwy pól i typy danych, mogłem za pomocą refleksji w jednym miejscu zaimplementować uzupełnianie części technicznej i mieć pewność, że w każdym serwisie będzie w ten sam sposób wypełnione.
@januszkuznik137
@januszkuznik137 21 күн бұрын
Extra, nie przewiduje jeszcze korzystac z refleksji przez jakiś czas ale teraz już wiem co to w ogóle jest. Obejrzałem wszystkie Twoje filmiki i czekam na kolejne, będziesz jeszcze coś wrzucać?
@wrosoftacademy
@wrosoftacademy 19 күн бұрын
Dziękuję za komentarz. Cieszę, że filmy niosą wartość i pomagają 😊 Oczywiście w drodze sa kolejne materiały. Musiałem zrobić przerwę wakacyjna. Jednak od września ruszamy z kolejna porcją wiedzy 🚀
@januszkuznik137
@januszkuznik137 2 ай бұрын
Dzięki za ciekawy materiał. Po dwóch ostatnich filmikach wiem jak tworzyć własne adnotacje ale nie mam wyobrażenia jak one działają.. jak dziala walidacja NotNull albo jak to się dzieje że Builder z lomboka generuje tyle kodu? Dograsz coś jeszcze na ten temat?
@wrosoftacademy
@wrosoftacademy 2 ай бұрын
Jasne, Świetny pomysł 😊 W następnej części bedziemy przechodzić przez refleksje i spróbujemy aop, to w tych mechanizmach najczęściej wykorzystujemy adnotacje z retention runtime. Jeśli chodzi o lombok, to kod generowany jest na etapie kompilacji kodu.
@januszkuznik137
@januszkuznik137 2 ай бұрын
@@wrosoftacademy Sam fakt, że kod generowany jest na etapie kompilacji jest dla mnie w miarę zrozumiały, nawet można sobie w targetach sprawdzić dokładnie jaki kod został wygenerowany. Tylko nie wiem na jakiej zasadzie adnotacje mają taką moc, że tak bardzo mogą wpływać na wygląd lub zachowanie danej klasy, pola czy metody
@wrosoftacademy
@wrosoftacademy 2 ай бұрын
@@januszkuznik137 Do tego służy kilka mechanizmów. Możemy wykorzystać refleksję i bibliotekę Reflection, w springu można wykorzystać mechanizm AOP. Oba sposoby są dla Retention - runtime. Lombok z kolei korzysta z wlasnego plugina do maven lub gradle i jest uruchamiany w odpowiednim momencie. Generalnie w narzędziach tych wykorzystuje się możliwość wyszukania metod, klas i innych artefaktów posiadających konkretną adnotację. Gdy mamy juz znalezione interesujące nas miejsca możemy wykonać jakis dodatkowy kod
@januszkuznik137
@januszkuznik137 2 ай бұрын
@@wrosoftacademy dzięki:)
@wrosoftacademy
@wrosoftacademy 7 күн бұрын
Film przedstawiajacy wykorzystanie adnotacji z refleksją: kzbin.info/www/bejne/e5W3aXydlLybesk Nie jest to co prawda NonNull, ale myślę że też ciekawy i pokazuje, jak można używać adnotacji
@januszkuznik137
@januszkuznik137 3 ай бұрын
W trakcie tego wykładu notorycznie mylone są nazwy "klasa abstrakcyjna" z "klasa anonimowa". Wprowadza to troche zamieszania i trudno się skupić na treści
@wrosoftacademy
@wrosoftacademy 3 ай бұрын
Ach, faktycznie. Wybacz. Teraz, jak jeszcze raz odsłuchałem, rzeczywiście to zauważyłem. Poprawię ten film. Dzieki za zwrócenie uwagi 😊
@jakub.686
@jakub.686 4 ай бұрын
jaka jest zaleta ze tworzysz instancje klasy App, zamiast odrazu pisac swoj kod w mainie?
@wrosoftacademy
@wrosoftacademy 4 ай бұрын
W tym przypadku w łatwy sposób można szybko przełączać się pomiędzy przykładami lub wersjami aplikacji, gdy mam metody run1(), run2() itd. Generalnie idea jest taka, żeby w main było jak najmniej kodu, bo ta metoda sluzy tylko uruchomieniu aplikacji. Później na przykład w spring boot również jest tak, że w main() podnosisz tylko context spring i nic więcej, jest to jedna linijka.
@jakub.686
@jakub.686 5 ай бұрын
Najprościej zrozumieć wyrażenie lambda poprzez to, że jest to funkcja anonimowa. Jest to funkcja, ponieważ nie trzeba jej przypisywać do konkretnej klasy, a anonimowa, ponieważ nie ma nazwy. Wyrażenie lambda implementuje interfejs funkcyjny, a interfejs funkcyjny ma tylko jedną abstrakcyjną metodę. Metoda abstrakcyjna to taka metoda, której ciało jest nadawane podczas implementacji. Wiec tworząc wyrażenie lambda, nadajemy ciało tej abstrakcyjnej metodzie. :D
@wrosoftacademy
@wrosoftacademy 11 ай бұрын
0:00 O czym będziemy mówić 0:53 .get() 3:17 .orElse() 7:23 .orElseGet() 9:11 .orElseThrow() 13:40 podsumowanine
@wrosoftacademy
@wrosoftacademy 11 ай бұрын
Kto znajdzie literówkę w kodzie dajcie znać 🖐 Mi oczy krwawią, jak to widzę ale znalazłem ją dopiero po opublikowaniu i na tym etapie produkcji to trochę za późno 😝 Ciekawe czy Wam też uda się ją znaleźć 😁
@wrosoftacademy
@wrosoftacademy Жыл бұрын
Film staje się nieaktualny powoli. Niestety taki los naszych aplikacji 🙄 Będe przygotowywać nową wersie integracji. Na pewno będzie Spring Boot 3, Spring 6.0.x i Swagger 3. Jeżeli chcielibvście zobaczyć inne integracje ze Srpingiem lub upgrade do Spring 6 to dajcie znać w komentarzach ;)
@prymek74
@prymek74 Жыл бұрын
a co z Gitem, sqlem, mavenem, wzorcami i webem o ktorych mowa w platnej sciezce? pojawia sie tu, czy jako odzielne kursy i kiedy? pzdr
@wrosoftacademy
@wrosoftacademy Жыл бұрын
Tak, to również będę omawiać. Jednak nagrania przygotowuję sam, więc potrzebuje czasu 😉 Kolejne filmy sukcesywnie wychodzą co tydzień.
@prymek74
@prymek74 Жыл бұрын
czym sie rozni ten darmowy kurs od tego platnego na udemy/eduj - tylko brakiem zadan?
@wrosoftacademy
@wrosoftacademy Жыл бұрын
Największą różnicą są zadania. Nie chodzi jednak o samą listę zadań, a o jej rozwiązania, ponieważ tam pokazuję jak je rozwiązuje. W ten sposób od samego początku przyzwyczajam uczestników do pisania kodu obiektowo. W każdym filmie z rozwiązaniem zadań są dodatkowe informacje. Podpowiedzi jak najlepiej rozwiązywać tego typu zadanie, jak inaczej można dany element wykorzystać, jak nie robić, żeby niepotrzebnie kodu nie komplikować, czy też niektóre tematy są pogłębiane. Rozwiązanie takie przyjąłem, ponieważ żeby nauczyć się programować nie wystarczy obejrzeć filmik, trzeba samemu pisać i to jest bonus dla osób próbujących rozwiązać zadania.
@prymek74
@prymek74 Жыл бұрын
witam, kiedy na eduju zostana uzupelnione brakujace 4 moduly w stosunku do tych na udemy, jak np. te 2 ostatnie z tej playlisty ?
@wrosoftacademy
@wrosoftacademy Жыл бұрын
Każda z tych platform ma inny tryb aktualizacji kursów. Po części jest to troche niezależne ode mnie. Staram się aktualizować regularnie. Z Eduj jest dodatkowy problem, ponieważ po wysłaniu do akceptacji, mam zablokowaną możliwość edycji przez kilka dni
@giemejl
@giemejl Жыл бұрын
A może Curie-Skłodowska też była kobietą?!
@wrosoftacademy
@wrosoftacademy Жыл бұрын
😆
@giemejl
@giemejl Жыл бұрын
Dobre :)
@wrosoftacademy
@wrosoftacademy Жыл бұрын
A Ty jakiego switch'a najczęściej używasz, a może wolisz if-else? Daj znać w komentarzach 😜
@wrosoftacademy
@wrosoftacademy Жыл бұрын
0:00 Wstęp 0:26 Przygotowanie projektu 2:53 for 4:12 for-each 5:56 forEach() - lambda 9:24 forEach() - referencje metody 10:47 Praktyczny przykład
@bartoszzaleski3640
@bartoszzaleski3640 Жыл бұрын
Piątunio jest Spoko.
@ukaszkarulek6308
@ukaszkarulek6308 2 жыл бұрын
Gratulacje!
@wrosoftacademy
@wrosoftacademy 2 жыл бұрын
dzięki ;)