Java Reflection Explained - bɘniɒlqxƎ noiɟɔɘlʇɘЯ ɒvɒᒐ

Поділитися
Вставка
  • Опубліковано 24 гру 2024

КОМЕНТАРІ • 351

  • @CodingWithJohn
    @CodingWithJohn  2 роки тому +46

    Try Neeva free for 1 full month here! neeva.com/codingwithjohn
    There's no way I could fit everything you can do with reflection in one video. So here are some more things to try!
    Method stuff:
    Get a method's name:
    method.getName();
    Get a method's return type:
    method.getReturnType();
    Invoke a method:
    method.invoke(anyParameters, listedLikeThis);
    If it's private or not accessible, put this before it:
    method.setAccessible(true);
    See if a method has an annotation:
    method.isAnnotationPresent(NameOfAnnotation.class);
    Get an annotation from a method:
    method.getAnnotation(NameOfAnnotation.class);
    Get a method's parameter types:
    method.getParameterTypes();
    Get annotations on a method's parameters:
    method.getParameterAnnotations()
    Get the class that declares this method:
    method.getDeclaringClass();
    Get all exceptions the method declares it can throw:
    method.getExceptionTypes();
    Field stuff:
    Get the value of a field:
    field.get(objectToGetThisFieldFrom);
    Get the type of a field:
    Field.getType();
    Set the value of a field:
    field.set(objectToSetThisFieldOn, valueToSetTheFieldTo);
    Get the name of a field:
    field.getName();
    See if a field has an annotation:
    field.isAnnotationPresent(NameOfAnnotation.class);
    Get an annotation from a field:
    field.getAnnotation(NameOfAnnotation.class);
    Get the class that declares this field:
    method.getDeclaringClass();
    Class stuff:
    Get a class's name:
    class.getName();
    See if a class has an annotation:
    class.isAnnotationPresent(NameOfAnnotation.class);
    Get an annotation from a class:
    class.getAnnotation(NameOfAnnotation.class);
    Get declared fields:
    class.getDeclaredFields();
    Get all fields, which will include fields declared in parent classes:
    class.getFields();
    Get declared methods:
    class.getDeclaredMethods();
    Get all methods, which will include fields declared in parent classes:
    class.getMethods();
    This should get you started. Keep exploring to find out what more you can do!

    • @puneetkumarsingh1484
      @puneetkumarsingh1484 2 роки тому

      😂 0:54

    • @KhalilRahmouni-qe5zs
      @KhalilRahmouni-qe5zs Рік тому

      no i use chatgpt instead

    • @ofekn
      @ofekn Рік тому

      You pretty much skipped
      getField(String name)
      getMethod(String name, Class... parameterTypes)
      which are pretty useful

    • @lcgswolf
      @lcgswolf 6 місяців тому +1

      Neeva is no longer existing! that is sad, I just heard about it

    • @pranavkrishna3048
      @pranavkrishna3048 Місяць тому

      gpts on the stage

  • @mushfiqfuad249
    @mushfiqfuad249 2 роки тому +163

    I can clearly say, John is by far the best Java tutor. I really wish him as my Java teacher back in my university days.

    • @carguy-xv2cl
      @carguy-xv2cl Рік тому +2

      Are you trying to say hes an old guy.

  • @Inkeri94
    @Inkeri94 2 роки тому +254

    you are without a doubt one of the best people teaching java and especially java core (I am already a working programmer but I like to watch well prepared videos as a way of knowgledge refreshment), keep up the good work man

  • @davidx5828
    @davidx5828 2 роки тому +105

    John if possible could you do a video on Spring? Your through explanations would be beneficial to all.

    • @lcgswolf
      @lcgswolf 6 місяців тому

      Yes please!!!!

  • @pikimk6167
    @pikimk6167 2 роки тому +6

    Some junior is lucky to have you as a mentor

  • @matt-g-recovers
    @matt-g-recovers Рік тому +22

    Hey John, I have been a software engineer for 12 years but I have a poor memory:) and appreciate your tutorials for my times revisiting concepts.
    I revisit even basic core concepts sometimes.
    As my career progresses, I find myself doing more code review and oversight vs coding myself plus I also use Kotlin (Android) half the time and trying to stay up on the latest language features and concepts as the industry changes is a lifetime of learning and sometimes relearning.
    You have a real knack at teaching and again, much appreciated 👍

    • @CodingWithJohn
      @CodingWithJohn  Рік тому +8

      I'm in the same position where I rarely get to code myself anymore at my job. Kind of ironic that the better you get at coding the less you get to actually do it!

  • @eugenesmith9940
    @eugenesmith9940 2 роки тому +1

    Encapsulation: "Look how awesome I am with all those security and stability measures".
    Those who just make default getters/setters: "Yeah, sure lol".
    Encapsulation: "It's not me being out-played it is you not being able to do stuff correctly… lol"
    Reflection:
    Encapsulation: "Screw me…".

  • @ofekn
    @ofekn Рік тому +1

    Here are some examples how reflections are used in real applications:
    events - using reflections and annotation you can build an event registry.
    equals - sometimes in the equals method, instead of using instanceof you use this.getClass() == that.getClass() this way you don't allow child classes to be equals.
    generics - when you use generics, you sometimes need the Class, for example Class#getEnumConstants can give you all possible values of an enum class, and Class#isInstance can help you verify fields.
    there is also java code which uses reflections, for example EnumMap has a constructor which accepts Class

  • @kenna5031
    @kenna5031 2 роки тому +20

    Reflection is a very powerful tool. I wrote an API to massively simplify the creation of command line user interface/interactivity for Java programs. I could not have done this without reflection (combined with custom annotations).

    • @cozyrain410
      @cozyrain410 2 роки тому +6

      this is cursed behavior

    • @beerensaft413
      @beerensaft413 2 роки тому +2

      if this API contains your code only why do you use reflection (your code is in front of you)

    • @makispapa5867
      @makispapa5867 Рік тому

      @@beerensaft413 Using reflection you can have the user call java methods directly or modify fields etc via command line. With reflection you can create a more 'direct' scripting system enabling the user to access code directly from within the script. It's very useful.

  • @WhitneyKugel
    @WhitneyKugel Рік тому +7

    Thank you for this. You've given me a lot to reflect on.

  • @РоманЯнущик
    @РоманЯнущик Рік тому

    I am from Belarus and start to lern JAVA.I not so fine speak English, but you teaching very and very understanding. Thank you. I'm waiting for new lessons

  • @armenuhiyeghoyan5419
    @armenuhiyeghoyan5419 7 місяців тому +1

    I am from Armenia .I want to become a programmist.I like the way you explain.Simple and understandable.

  • @MD90X
    @MD90X 2 роки тому +2

    you got me with the stack overflow bit.

  • @TheGreat8220
    @TheGreat8220 2 роки тому

    I gotta be honest... This was the first UA-cam video I've ever watched with a paid promotion that actually convinced me to look into the advertised item further. Also, I love all your videos!

  • @Zeero3846
    @Zeero3846 Рік тому +1

    The biggest loss, other than performance, you will have when you use reflection is the ability to trace your code even with the most powerful IDE features. You are guaranteeing the need for special documentation, and never assume you can do that well or that others will even bother with it if you do write it.
    Plus, writing a domain specific language to do whatever hack you were going to do is probably easier to write, test, and debug than a reflection-based solution that is forced to adopt a Java-centric design. Personally, the only legit usage I find for reflection is creating a plug-in system.

  • @neon0wl2107
    @neon0wl2107 2 роки тому +2

    Wow, ok this is the first time i have watched the whole promotion on any video. I just realized this.

  • @ByronicGuitarist
    @ByronicGuitarist 2 роки тому +1

    Like a month ago I was reading some code at work that was doing reflection stuff and I thought to myself, "damn, I wish John had a Reflection video". Thanks John, you're the best in the game!

  • @pebble6248
    @pebble6248 2 роки тому +8

    Your videos are great! I just got home from school, and without even finishing the video I've already shared it to my friend because (1) I know he'll benefit from it, and (2) I don't even have to finish it to know that it's amazing content.
    Thank you John!!

  • @Ross-sg3hq
    @Ross-sg3hq 2 роки тому +8

    I've seen a lot of educational videos for Java but the way you explain stuff is a next level! Thank you :)

  • @DejiAdegbite
    @DejiAdegbite Рік тому +1

    Wow! This looks like a feature of Java I don't think I ever want to touch.

  •  2 роки тому

    Thank you for your videos!

  • @franchello1105
    @franchello1105 Рік тому +1

    My favorite trick is to change the underlying fields of String. Then you can change the contents of the char[] array. Then you can use literals of these strings that you have changed. Sysytem.out.println("Yes") shows "No" intead.

  • @MilanRubiksCube97
    @MilanRubiksCube97 3 місяці тому

    Reflection is a life saver when making dynamic libraries in Java. One example would be making an auditing library for your database. You have no idea what's inside the classes your event listeners are tracking and reflection helps out tremendously.

  • @vikingthedude
    @vikingthedude Рік тому +1

    I am so grateful for these java tutorials. Not too beginner like a majority of tutorials out there, and very well explained

  • @YassineMohammedAbuRazane
    @YassineMohammedAbuRazane Рік тому +1

    Practically, this increases my confusion about the purpose of the encapsulation in Java .....

  • @DanielSColao
    @DanielSColao 2 роки тому +1

    That's the best video regarding Java Reflection I've watched so far. Everything was clearly explained. Well done, mate.

  • @panos21sonic
    @panos21sonic Рік тому +1

    Feels so cool to get an IllegalAccessException lmfao, great video John

  • @lamnguyenhoang6757
    @lamnguyenhoang6757 2 місяці тому

    John, You are the best teacher for Java I have ever known, I hope you have more videos about advanced topics.

  • @ohno2125
    @ohno2125 2 роки тому +1

    At first, I have thought setting private fields was for security reasons (as even my university professor once told me 'if possible, make every method private for security reasons') when regarding to Java programming, how wrong am I now that I've watched this video, that is not the case (and I see why how we can use this as you've explained). Thanks for the information!

    • @CodingWithJohn
      @CodingWithJohn  2 роки тому +2

      That's typically still a good idea! But yeah you're still able to break basically every rule with reflection

  • @ПаульИванков
    @ПаульИванков 10 місяців тому

    Hi John. I am Ukrainian, my English is so so. But thank God I understand almoust all your speaking. Short and easy to understanding. Thank you Bro.

  • @pizz479
    @pizz479 Рік тому +1

    Wow, this is such a fresh shock to me learning Java. I'm studying to switch my stack from Python to Java. Your lesson do help me a lot. Thanks for a good lesson John!

  • @christianmascolo2612
    @christianmascolo2612 2 роки тому +3

    Fantastic explanation,never heard about that. I loved the reference to better call Saul!

  • @alpaslanbek
    @alpaslanbek 2 роки тому +4

    It's always good to know what you can do. But... There is a reason why there are access modifiers. If a method is declared private, it was decided for a reason. Using reflection should be avoided in production code at all cost. But you said it all :) Good content

    • @kennichdendenn
      @kennichdendenn 2 роки тому +1

      Well, when working with legacy code you dont own, sometimes there is a need - especially for testing purposes, so at least not in production.
      Then, it might be the best option, because that code oftentimes was not designed with (modern) testing in mind - but rewriting aint an option, not testing isnt either, and working around that problem leads to bloated and coarse grained tests - which is also not what we want.

  • @user-ttishere
    @user-ttishere Рік тому

    you simply the best guide i've ever seen in java

  • @sohezee4590
    @sohezee4590 2 роки тому +1

    8:21 Better call saul reference

  • @fiveoneecho
    @fiveoneecho 2 роки тому +1

    Reflection is amazing when creating data structures using generics.

  • @dlandsvolka4046
    @dlandsvolka4046 2 роки тому +2

    16:08 IT'S REALLY USEFULL FOR SPIGOT PLUGIN DEVELOPER O_O
    now i can see and change the value of field and modify the game behavior

  • @saahilnayyer6865
    @saahilnayyer6865 2 роки тому +2

    The Better Call Saul reference really put a smile on my face. Nice cat name. Haha

  • @turrnut
    @turrnut 2 роки тому +1

    People KEPT SAYING java is a static language, but with reflection, java is both static AND dynamic. And same thing, java have Stream API that implements Function Programming, so java is both a FP and an OOP language

  • @DipanjanPatra
    @DipanjanPatra Рік тому

    I just gained a new superpower, this is an amazing introduction to reflections!

  • @Beee178
    @Beee178 Рік тому +1

    Your videos are amazing, thank you!

  • @rohitsharma-xt8qe
    @rohitsharma-xt8qe 5 місяців тому

    This is some seriously good stuff John, cheers to you, awsome work mate.

  • @huseyinkadioglu
    @huseyinkadioglu 2 місяці тому

    John, you are good at teaching i tell you that. You make it look easier and simple.

  • @Andrew94750
    @Andrew94750 2 роки тому +2

    I used reflection a year ago for AQA API client. John, huge thank you for this video! This video helped me to remember some things about reflection.
    It would a huge help to see a video about spring injection or SOLID.
    God bless you!

  • @pradyumn2692
    @pradyumn2692 9 місяців тому

    Wunderbar. Maximum respect for explaining this in such a simple way

  • @shubhamagarwal9182
    @shubhamagarwal9182 5 місяців тому

    helpful
    ### Thumb rule
    - if it is possible to do something without reflection - it's best to avoid using reflection.
    - generally without reflection
    - our code will be faster
    - more robust
    - more testable
    - & generally just easier and more pleasant to work with
    - use reflection where it is necessary.

  • @mahoneg
    @mahoneg 2 роки тому +11

    As a long-time programmer in many languages, I still love watching your videos. I recommend them to jr developers as well. Warning ** Don't use something just because it seems cool***. Keep it simple and straightforward if you can. It will be easier for you and the people who follow you into your code. I am more of a dog guy but I like cats too!

    • @CodingWithJohn
      @CodingWithJohn  2 роки тому +7

      Awesome, thanks for recommending them! And you're right. Reflection or otherwise, opt for simplicity, readability, and maintainability over coolness. Though it's fun to know the cool stuff too.

  • @mehulsolanki9435
    @mehulsolanki9435 Рік тому

    You are too good to be true! I can learn anything you teach!

  • @bradenborman4396
    @bradenborman4396 2 роки тому

    Just a few weeks ago, I refactored some real old code where a declared factory was setup, and depending on when it met a condition it returned a new instance of an abstract class - in todays world, you would use spring and make each one a component and put it in the app context, and loop through a list to check if it returns true and make a new instance then, but this code, had a literal 40 if statements, and each one just returned a new instance with the same constructor.
    Rather than refactoring to get it to a more proper todays day in age, I at least removed all the declared new instance statements, and saved the class that would try to be instantiated, and then used reflection and the get declared constructor to make a new instance to return. Cut down the code tremendously and I didn’t have to fix oodles of tests 😄

  • @kandualmahesh3547
    @kandualmahesh3547 2 роки тому +1

    Can you make an video differentiation between Java eight and 11… Add Java interview questions and also please add creating on micro services with respect to the spring boot..

  • @MJ-cf9nl
    @MJ-cf9nl Рік тому

    I am a lead SWE myself and my answer to your question "When should you use Reflection?" is: never, never use Reflection.
    Why? because it is very very slow at the runtime, it exposes/opens your code to bugs and vulnerabilities, and also it makes your code harder to understand or work with.
    If you find yourself needing to use Reflection in your code to achieve or build something then your code needs a serious refactoring or redesign...

  • @mrugankgadgil7368
    @mrugankgadgil7368 2 роки тому +4

    John - can you make something on DSA using Java. Nowadays DSA is one of the hot topics.
    Topics like dynamic programming (top down & bottom up),
    Stacks,
    Queues,
    Linkedlist,
    Trees,
    Graphs,
    Greedy algos,
    Backtracking,
    Sliding window,
    2 pointers
    I know that's huge but an understanding on the concept by using your teaching techniques would definitely benefit.

  • @semilife
    @semilife 11 місяців тому

    Wow thats powerful stuff, this is the first time I have tried to understand reflection in any detail. Thanks for a great video.

  • @DarkOceanShark
    @DarkOceanShark 2 роки тому +1

    Nice video mate! What's the intellij theme you are rocking?

    • @CodingWithJohn
      @CodingWithJohn  2 роки тому

      Just the default theme, with the background darkened a bit I think

  • @GordonChil
    @GordonChil 2 роки тому

    I have been using reflection (sparingly) for years. I never knew where the name came from until now. Thanks!

  • @kishDoesThings
    @kishDoesThings 2 роки тому +1

    spend your whole life learning OOP concepts like encapsulation,only to get thrown out the window.
    It's so crazy to think this but Java reminds me of Anakin from Star Wars .
    "you were the chosen one."

  • @Msyoutube38
    @Msyoutube38 9 місяців тому

    By far the best explanation video I have seen on reflection. Excellent work, much appreciated!

  • @mrphan529
    @mrphan529 2 роки тому

    the guidebook did, and now I finally understand the chanics!

  • @sergiocampos6252
    @sergiocampos6252 20 днів тому

    Thanks John!! I was looking on google something explained that it isn't that technical and you helped a lot with the "illegal reflective access" topic I was looking for :)

  • @Inkeri94
    @Inkeri94 2 роки тому +1

    I had a practical use case for this at work recently
    User profile has different fields that are set on him, but those fields might change and also required fields (for counting the percentage of a profile status) might also change so the solution I came up with was that I have prepared a String list of field names in an xml file (we are using xml Spring in this project, not spring boot) that will be required to calculate profile status, then I counted null and non-null fields of objects that combine into a profile page which resulted in something like this at the end:
    Your profile is complete in 69%, fill out "phone number" next.

    • @makiveli2006
      @makiveli2006 2 роки тому

      Don't do that. Use XPath for dynamic inputs like that with regex. You are allowing people to inject arbitrary fields at run time in your code.

    • @Inkeri94
      @Inkeri94 2 роки тому

      @@makiveli2006 how is that even possible if that is an endpoint?

    • @Inkeri94
      @Inkeri94 2 роки тому

      @@makiveli2006 i think you understood wrong what i said, i checked what xpath is and it is nowhere near my solution, that list is a spring bean so i have no idea how anyone would interfere with it at runtime, could you elaborate on that or you understood my approach wrong?

    • @makiveli2006
      @makiveli2006 2 роки тому

      @@Inkeri94 You have a UserDTO object that does not require reflection. Path expression languages or ObjectMapper already does what you described. Dynamic Data Driven Design using XPath or JsonPath with predicates is absolutely a more viable and secure solution than reading from memory objects that are vulnerable to corruption and bad actors. An expression resolver which parses the xml or json input for specific values using predefined predicates is a better solution. Your "endpoint" is just a machine, even if it is hosted in a cloud platform.

    • @Inkeri94
      @Inkeri94 2 роки тому

      @@makiveli2006 how to corrupt a java spring xml file with bean declarations?

  • @rastkostajic5525
    @rastkostajic5525 9 місяців тому

    Mindblowing lesson!!! Never found this anywhere on the web. Thanks a lot.

  • @simonrozendal7542
    @simonrozendal7542 2 роки тому +1

    Hey John. I used reflection in my own framework architecture but less as possible, and there was no other option. I used it to for code in the future that doesn't exist yet. So thank you for your tutorial which confirmed is used it on a good way.

  • @Prashantable1
    @Prashantable1 Рік тому

    Very well explained. Now my morning is good indeed.

  • @TheSeanUhTron
    @TheSeanUhTron 2 роки тому

    I've never used reflections... But now that I learn a little bit more about it, I can see this being useful for debugging a running Java web application. JSP pages can be modified while the server is running, just like with PHP. So I could put some debug code with Reflections in it into one of those pages and mess with the main server code without having to recompile and redeploy!

  • @Devivl
    @Devivl 2 роки тому

    You are without a doubt one of the best people teaching java! Thank you.

  • @zenCode3
    @zenCode3 Рік тому +1

    Thank you so much

  • @ShermukhammadKarimov
    @ShermukhammadKarimov 7 місяців тому

    Thanks for clear explanation.

  • @AntonyMBenedict
    @AntonyMBenedict 2 роки тому +1

    I have never worked in Java, nor the need to do so (mostly C++/Python). I still watch your videos and enjoy them. You have a very good style. Do you have plans to teach C++ too? :D

  • @Graciousalicando
    @Graciousalicando 2 роки тому +1

    Dear John, I'm happy for you. I'm a huge fan of yours. How old were you when you first started learning to code?

    • @CodingWithJohn
      @CodingWithJohn  2 роки тому +2

      I was 18. I didn't code at all until my freshman year of college, in my first computer science class.

    • @Graciousalicando
      @Graciousalicando 2 роки тому

      @@CodingWithJohn then how old are you now? 51? I'd do some research about you earlier and I dont know if it's true.

  • @yuxiaofei3442
    @yuxiaofei3442 2 роки тому

    amazing video ,explain reflection thoroughly,so much easier understand than all the other guides out there on line

  • @maziarchoubineh7787
    @maziarchoubineh7787 Рік тому +1

    Thank you very much for the complete narratives. Your videos have not only helped me with Java but also sparked my interest in becoming a developer.God bless you :)

  • @nischalofchrist
    @nischalofchrist 2 роки тому

    This with your annotations video, and I totally understand how SpringBoot calls functions that you had defined with their annotations.

  • @princethampan
    @princethampan 10 місяців тому

    That was a cool simple and very useful tutorial. Thank you very much.

  • @LTZMSYAL
    @LTZMSYAL 2 роки тому

    Hey John you're the man! It's pleasant to watch your videos. I'm considering to subscribe to your java class.

  • @ollysalanson9452
    @ollysalanson9452 2 роки тому

    Thank you John!

  • @dal4147
    @dal4147 Рік тому

    awesome explanation, thank you

  • @anonimanonim1223
    @anonimanonim1223 2 роки тому

    BEST TUTORIALS EVER!!!!!!!!!!

  • @losokos
    @losokos 2 роки тому

    I have no idea how i would use this ever, but when i do i will be most thankful haha

  • @johnkeck
    @johnkeck 2 роки тому

    Great explanation! Thanks, John!

  • @quitchiboo
    @quitchiboo 2 роки тому

    In addition to the great content, I really want to stress how much I like that you don't use clickbaity titles and thumbnails on your videos, it has become an absolute plague on youtube. I guess it's a reflection, pun intended;), of your developer spirit to be succint and no bs when it comes to that stuff. Thanks a ton John!

  • @whiz-code
    @whiz-code Рік тому

    You are really a coding geek. Thank you

  • @tfamidoinglol4243
    @tfamidoinglol4243 2 роки тому +1

    Video suggestion : Java Locks
    Also, thank you for all of your videos, John. They are really helpful. 😄

  • @kbd3879
    @kbd3879 Рік тому

    Cool Video Title man , i love your videos!!

  • @Gamer_with_knowledge
    @Gamer_with_knowledge Рік тому

    Hi John , by far you are the best java teacher I have found on youtube.
    I request you to start making videos on Spring-Boot topics as well.
    I swear views will skyrocket gradually.
    ~ Your faithful old subscriber.

  • @HocineFerradj
    @HocineFerradj Рік тому

    you are a good teacher !! thanks...

  • @stevanvieira3665
    @stevanvieira3665 9 місяців тому

    Great explanation, loved it, thanks :)

  • @theredd1703
    @theredd1703 10 місяців тому

    Your explanation is awesome!! Thanks!

  • @aniketnangare904
    @aniketnangare904 Рік тому

    Thanks a lot for this great knowledge

  • @adamlasry5225
    @adamlasry5225 2 роки тому

    Thank you for all your lectures.

  • @rennyvalera9124
    @rennyvalera9124 2 роки тому

    I know is a lot to ask, i really like your explanations but your content is growing and i'm struggling to navigate through it, i would be awesome if you could sort out your content! thanks for your contribution i like java but there are some topics that i would still be struggling with if i hadn't watched your videos!

  • @CallumAtwal
    @CallumAtwal Рік тому

    A good use case for reflection is loading some class based on a string (of the package name) when you have multiple ones. Eg you might have to support something with multiple years. And you can use a year string to dynamically load a particular year class

  • @Kabasaurus
    @Kabasaurus Рік тому

    Great explanation, thanks you so much on helping me on my studies :)

  • @АнастасіяЛях-м6е

    Thank you! You are wonderful teacher👍

  • @mrf1yn561
    @mrf1yn561 2 роки тому +1

    I really like your videos.
    Can you do a video on the java function package i.e. Consumers, Functions etc.
    I see it being used in lot of Netty based projects and yet i don't understand it.

  • @mightygreen3364
    @mightygreen3364 2 роки тому

    This is super interesting, I can especially see myself use this for testing classes

  • @jereramirez7433
    @jereramirez7433 2 роки тому

    Thank you! this was amazingly clear

  • @JenHsingHuang
    @JenHsingHuang Рік тому

    So so so helpful, you are amazing

  • @kamillo27
    @kamillo27 8 місяців тому

    amazing! I find it useful when testing private methods. Do you see any obstacles except that program could run slower?

  • @blackblather
    @blackblather Рік тому

    I like the irony of how neeva sponsored this video, telling us how annoying ads are.

  • @MrAikien
    @MrAikien 2 роки тому

    Wow! This is awesome! Thanks! 👌👍🙏