{"id":18624986,"url":"https://github.com/daverbk/jmc","last_synced_at":"2025-11-03T19:30:34.198Z","repository":{"id":200455413,"uuid":"705543157","full_name":"daverbk/jmc","owner":"daverbk","description":"Exercises completed and notes made while going through Tim Buchalka's `Java Masterclass`","archived":false,"fork":false,"pushed_at":"2024-08-04T22:10:33.000Z","size":643,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-27T05:42:05.588Z","etag":null,"topics":["java","java-17","tim-buchulka-java-masterclass"],"latest_commit_sha":null,"homepage":"https://www.udemy.com/course/java-the-complete-java-developer-course","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daverbk.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-16T08:11:21.000Z","updated_at":"2024-08-04T22:10:37.000Z","dependencies_parsed_at":"2023-12-28T22:30:57.501Z","dependency_job_id":"5bae38d3-5d7a-4d38-9f39-1c1116d40da8","html_url":"https://github.com/daverbk/jmc","commit_stats":null,"previous_names":["daverbk/jmc"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daverbk%2Fjmc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daverbk%2Fjmc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daverbk%2Fjmc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daverbk%2Fjmc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daverbk","download_url":"https://codeload.github.com/daverbk/jmc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239418579,"owners_count":19635208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java-17","tim-buchulka-java-masterclass"],"created_at":"2024-11-07T04:32:26.489Z","updated_at":"2025-11-03T19:30:34.077Z","avatar_url":"https://github.com/daverbk.png","language":"Java","readme":"# _Conspectus_\n\n## Object Oriented Programming 1\n* [Object Oriented Programming 1](https://github.com/daverbk/jmc/tree/main/05-oop1#notes)\n    * [Object Oriented Programming](https://github.com/daverbk/jmc/tree/main/05-oop1#object-oriented-programming)\n    * [Organizing classes](https://github.com/daverbk/jmc/tree/main/05-oop1#organizing-classes)\n    * [Access modifiers for the class](https://github.com/daverbk/jmc/tree/main/05-oop1#access-modifiers-for-the-class)\n    * [Access modifiers for class members](https://github.com/daverbk/jmc/tree/main/05-oop1#access-modifiers-for-class-members)\n    * [Encapsulation](https://github.com/daverbk/jmc/tree/main/05-oop1#encapsulation)\n    * [What is null?](https://github.com/daverbk/jmc/tree/main/05-oop1#what-is-null)\n    * [Getters / setters](https://github.com/daverbk/jmc/tree/main/05-oop1#getters--setters)\n    * [`this`](https://github.com/daverbk/jmc/tree/main/05-oop1#this)\n    * [Constructor](https://github.com/daverbk/jmc/tree/main/05-oop1#constructor)\n        * [Default constructor](https://github.com/daverbk/jmc/tree/main/05-oop1#default-constructor)\n        * [Constructor chaining with this()](https://github.com/daverbk/jmc/tree/main/05-oop1#constructor-chaining-with-this)\n    * [Static vs Instance Members](https://github.com/daverbk/jmc/tree/main/05-oop1#static-vs-instance-members)\n        * [Static Variables](https://github.com/daverbk/jmc/tree/main/05-oop1#static-variables)\n            * [Can be used for](https://github.com/daverbk/jmc/tree/main/05-oop1#can-be-used-for)\n        * [Instance Variables](https://github.com/daverbk/jmc/tree/main/05-oop1#instance-variables)\n        * [Instance Methods](https://github.com/daverbk/jmc/tree/main/05-oop1#instance-methods)\n        * [Advice from Tim](https://github.com/daverbk/jmc/tree/main/05-oop1#advice-from-tim)\n    * [Plain Old Java Object](https://github.com/daverbk/jmc/tree/main/05-oop1#plain-old-java-object)\n    * [Record](https://github.com/daverbk/jmc/tree/main/05-oop1#record)\n        * [Implicit code](https://github.com/daverbk/jmc/tree/main/05-oop1#implicit-code)\n        * [Why have an immutable record?](https://github.com/daverbk/jmc/tree/main/05-oop1#why-have-an-immutable-record)\n        * [POJO vs. Record](https://github.com/daverbk/jmc/tree/main/05-oop1#pojo-vs-record)\n    * [Inheritance](https://github.com/daverbk/jmc/tree/main/05-oop1#inheritance)\n        * [`extends`](https://github.com/daverbk/jmc/tree/main/05-oop1#extends)\n        * [`super()`](https://github.com/daverbk/jmc/tree/main/05-oop1#super)\n        * [this vs super](https://github.com/daverbk/jmc/tree/main/05-oop1#this-vs-super)\n        * [Constructor chaining](https://github.com/daverbk/jmc/tree/main/05-oop1#constructor-chaining)\n        * [Code Re-use](https://github.com/daverbk/jmc/tree/main/05-oop1#code-re-use)\n            * [Overriding a method](https://github.com/daverbk/jmc/tree/main/05-oop1#overriding-a-method)\n            * [Overridden method](https://github.com/daverbk/jmc/tree/main/05-oop1#overridden-method)\n    * [java.lang.Object](https://github.com/daverbk/jmc/tree/main/05-oop1#javalangobject)\n    * [Polymorphism](https://github.com/daverbk/jmc/tree/main/05-oop1#polymorphism)\n        * [Method Overloading vs Overriding](https://github.com/daverbk/jmc/tree/main/05-oop1#method-overloading-vs-overriding)\n\n## Object Oriented Programming 2\n* [Object Oriented Programming 2](https://github.com/daverbk/jmc/tree/main/06-oop2#notes)\n    * [Inheritance vs Composition](https://github.com/daverbk/jmc/tree/main/06-oop2#inheritance-vs-composition)\n        * [Advice from Tim](https://github.com/daverbk/jmc/tree/main/06-oop2#advice-from-tim)\n            * [Why is Composition preferred?](https://github.com/daverbk/jmc/tree/main/06-oop2#why-is-composition-preferred)\n            * [Why is Inheritance less flexible?](https://github.com/daverbk/jmc/tree/main/06-oop2#why-is-inheritance-less-flexible)\n    * [Encapsulation](https://github.com/daverbk/jmc/tree/main/06-oop2#encapsulation)\n        * [Encapsulation Principles](https://github.com/daverbk/jmc/tree/main/06-oop2#encapsulation-principles)\n    * [Polymorphism](https://github.com/daverbk/jmc/tree/main/06-oop2#polymorphism)\n        * [Ad-hock](https://github.com/daverbk/jmc/tree/main/06-oop2#ad-hock)\n        * [Parametric](https://github.com/daverbk/jmc/tree/main/06-oop2#parametric)\n    * [Local Variable Type Inference](https://github.com/daverbk/jmc/tree/main/06-oop2#local-variable-type-inference)\n        * [Compile Time Typing](https://github.com/daverbk/jmc/tree/main/06-oop2#compile-time-typing)\n        * [Run Time Typing](https://github.com/daverbk/jmc/tree/main/06-oop2#run-time-typing)\n        * [`instanceof` operator](https://github.com/daverbk/jmc/tree/main/06-oop2#instanceof-operator)\n    * [`package`](https://github.com/daverbk/jmc/tree/main/06-oop2#package)\n\n## Arrays\n* [Arrays](https://github.com/daverbk/jmc/tree/main/07-arrays#notes)\n    * [Arrays](https://github.com/daverbk/jmc/tree/main/07-arrays#arrays)\n        * [Declaring an Array](https://github.com/daverbk/jmc/tree/main/07-arrays#declaring-an-array)\n        * [Instantiating an Array](https://github.com/daverbk/jmc/tree/main/07-arrays#instantiating-an-array)\n    * [What is an array, really?](https://github.com/daverbk/jmc/tree/main/07-arrays#what-is-an-array-really)\n    * [java.util.Arrays](https://github.com/daverbk/jmc/tree/main/07-arrays#javautilarrays)\n    * [Reference Types vs Value Types](https://github.com/daverbk/jmc/tree/main/07-arrays#reference-types-vs-value-types)\n    * [Varargs](https://github.com/daverbk/jmc/tree/main/07-arrays#varargs)\n    * [Two-Dimensional Array](https://github.com/daverbk/jmc/tree/main/07-arrays#two-dimensional-array)\n    * [Multi Dimensional Array](https://github.com/daverbk/jmc/tree/main/07-arrays#multi-dimensional-array)\n\n## List\n* [List](https://github.com/daverbk/jmc/tree/main/08-list#notes)\n    * [Arrays vs ArrayLists](https://github.com/daverbk/jmc/tree/main/08-list#arrays-vs-arraylists)\n    * [Instantiating with Values](https://github.com/daverbk/jmc/tree/main/08-list#instantiating-with-values)\n    * [Element information](https://github.com/daverbk/jmc/tree/main/08-list#element-information)\n    * [Finding an element](https://github.com/daverbk/jmc/tree/main/08-list#finding-an-element)\n    * [Sorting](https://github.com/daverbk/jmc/tree/main/08-list#sorting)\n        * [Array](https://github.com/daverbk/jmc/tree/main/08-list#array)\n        * [ArrayList](https://github.com/daverbk/jmc/tree/main/08-list#arraylist)\n    * [Creating Lists from Arrays](https://github.com/daverbk/jmc/tree/main/08-list#creating-lists-from-arrays)\n        * [Using `Arrays.asList()`](https://github.com/daverbk/jmc/tree/main/08-list#using-arraysaslist)\n        * [Using `List.of()`](https://github.com/daverbk/jmc/tree/main/08-list#using-listof)\n    * [Creating Arrays from ArrayLists](https://github.com/daverbk/jmc/tree/main/08-list#creating-arrays-from-arraylists)\n    * [List](https://github.com/daverbk/jmc/tree/main/08-list#list)\n        * [ArrayList operations](https://github.com/daverbk/jmc/tree/main/08-list#arraylist-operations)\n        * [LinkedList operations](https://github.com/daverbk/jmc/tree/main/08-list#linkedlist-operations)\n    * [ArrayList](https://github.com/daverbk/jmc/tree/main/08-list#arraylist-1)\n        * [Bottlenecks](https://github.com/daverbk/jmc/tree/main/08-list#bottlenecks)\n        * [Benefits](https://github.com/daverbk/jmc/tree/main/08-list#benefits)\n    * [LinkedList](https://github.com/daverbk/jmc/tree/main/08-list#linkedlist)\n        * [Bottlenecks](https://github.com/daverbk/jmc/tree/main/08-list#bottlenecks-1)\n        * [Benefits](https://github.com/daverbk/jmc/tree/main/08-list#benefits-1)\n    * [Advice from Tim](https://github.com/daverbk/jmc/tree/main/08-list#advice-from-tim)\n    * [LinkedList's the Queue and Stack methods](https://github.com/daverbk/jmc/tree/main/08-list#linkedlists-the-queue-and-stack-methods)\n    * [Iterator](https://github.com/daverbk/jmc/tree/main/08-list#iterator)\n    * [Iterator vs ListIterator](https://github.com/daverbk/jmc/tree/main/08-list#iterator-vs-listiterator)\n    * [Why does Java have primitive data types?](https://github.com/daverbk/jmc/tree/main/08-list#why-does-java-have-primitive-data-types)\n    * [Boxing](https://github.com/daverbk/jmc/tree/main/08-list#boxing)\n        * [Autoboxing](https://github.com/daverbk/jmc/tree/main/08-list#autoboxing)\n        * [Automatic unboxing](https://github.com/daverbk/jmc/tree/main/08-list#automatic-unboxing)\n    * [Enumeration](https://github.com/daverbk/jmc/tree/main/08-list#enumeration)\n\n## Abstraction\n* [Abstraction](https://github.com/daverbk/jmc/tree/main/09-abstraction#notes)\n    * [Abstract method](https://github.com/daverbk/jmc/tree/main/09-abstraction#abstract-method)\n    * [Concrete method](https://github.com/daverbk/jmc/tree/main/09-abstraction#concrete-method)\n    * [Method Modifiers](https://github.com/daverbk/jmc/tree/main/09-abstraction#method-modifiers)\n    * [Abstract class](https://github.com/daverbk/jmc/tree/main/09-abstraction#abstract-class)\n        * [When](https://github.com/daverbk/jmc/tree/main/09-abstraction#when)\n    * [Interface](https://github.com/daverbk/jmc/tree/main/09-abstraction#interface)\n        * [When](https://github.com/daverbk/jmc/tree/main/09-abstraction#when-1)\n    * [Abstract class vs Interface](https://github.com/daverbk/jmc/tree/main/09-abstraction#abstract-class-vs-interface)\n    * [A class can use extends and implements in same declaration](https://github.com/daverbk/jmc/tree/main/09-abstraction#a-class-can-use-extends-and-implements-in-same-declaration)\n    * [`final` modifier](https://github.com/daverbk/jmc/tree/main/09-abstraction#final-modifier)\n    * [Constants](https://github.com/daverbk/jmc/tree/main/09-abstraction#constants)\n\n## Generics\n* [Generics](https://github.com/daverbk/jmc/tree/main/10-generics#notes)\n    * [Convention](https://github.com/daverbk/jmc/tree/main/10-generics#convention)\n    * [Raw use](https://github.com/daverbk/jmc/tree/main/10-generics#raw-use)\n    * [Specifying an upper bound](https://github.com/daverbk/jmc/tree/main/10-generics#specifying-an-upper-bound)\n    * [Comparable](https://github.com/daverbk/jmc/tree/main/10-generics#comparable)\n    * [Comparable vs Comparator](https://github.com/daverbk/jmc/tree/main/10-generics#comparable-vs-comparator)\n    * [Limitation of a reference of generic class](https://github.com/daverbk/jmc/tree/main/10-generics#limitation-of-a-reference-of-generic-class)\n    * [Generic method](https://github.com/daverbk/jmc/tree/main/10-generics#generic-method)\n        * [Type Parameters](https://github.com/daverbk/jmc/tree/main/10-generics#type-parameters)\n            * [Generic class](https://github.com/daverbk/jmc/tree/main/10-generics#generic-class)\n            * [Generic method](https://github.com/daverbk/jmc/tree/main/10-generics#generic-method-1)\n        * [Type Arguments](https://github.com/daverbk/jmc/tree/main/10-generics#type-arguments)\n        * [Wildcards](https://github.com/daverbk/jmc/tree/main/10-generics#wildcards)\n    * [Type Erasure](https://github.com/daverbk/jmc/tree/main/10-generics#type-erasure)\n    * [Using Multiple types to declare an Upper Bound](https://github.com/daverbk/jmc/tree/main/10-generics#using-multiple-types-to-declare-an-upper-bound)\n\n## Nested Types\n* [Nested Types](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#notes)\n    * [Nested Classes](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#nested-classes)\n        * [Static Nested Class](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#static-nested-class)\n        * [Inner Classes](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#inner-classes)\n        * [Local Classes](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#local-classes)\n            * [Local Class's 'Captured Variables'](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#local-classs-captured-variables)\n            * [Effectively Final](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#effectively-final)\n        * [Anonymous Classes](https://github.com/daverbk/jmc/tree/main/11-nestedclasses#anonymous-classes)\n\n## Lambdas\n* [Lambdas](https://github.com/daverbk/jmc/tree/main/12-lambda#notes)\n    * [The Lambda Expression](https://github.com/daverbk/jmc/tree/main/12-lambda#the-lambda-expression)\n    * [Anonymous class and the lambda expression](https://github.com/daverbk/jmc/tree/main/12-lambda#anonymous-class-and-the-lambda-expression)\n        * [Anonymous Class](https://github.com/daverbk/jmc/tree/main/12-lambda#anonymous-class)\n        * [Lambda Expression](https://github.com/daverbk/jmc/tree/main/12-lambda#lambda-expression)\n            * [Lambda expression variations](https://github.com/daverbk/jmc/tree/main/12-lambda#lambda-expression-variations)\n                * [For a single parameter](https://github.com/daverbk/jmc/tree/main/12-lambda#for-a-single-parameter)\n                * [The lambda body](https://github.com/daverbk/jmc/tree/main/12-lambda#the-lambda-body)\n                    * [Single expression](https://github.com/daverbk/jmc/tree/main/12-lambda#single-expression)\n                    * [Code block](https://github.com/daverbk/jmc/tree/main/12-lambda#code-block)\n                * [With multiple parameters](https://github.com/daverbk/jmc/tree/main/12-lambda#with-multiple-parameters)\n                * [The lambda body](https://github.com/daverbk/jmc/tree/main/12-lambda#the-lambda-body-1)\n                    * [Single expression](https://github.com/daverbk/jmc/tree/main/12-lambda#single-expression-1)\n                    * [Code block](https://github.com/daverbk/jmc/tree/main/12-lambda#code-block-1)\n    * [`java.util.function`](https://github.com/daverbk/jmc/tree/main/12-lambda#javautilfunction)\n        * [Basic categories of Functional Interfaces](https://github.com/daverbk/jmc/tree/main/12-lambda#basic-categories-of-functional-interfaces)\n            * [The `Consumer` interface](https://github.com/daverbk/jmc/tree/main/12-lambda#the-consumer-interface)\n            * [The `Predicate` Interface](https://github.com/daverbk/jmc/tree/main/12-lambda#the-predicate-interface)\n            * [The `Function` Interface](https://github.com/daverbk/jmc/tree/main/12-lambda#the-function-interface)\n            * [The `Supplier` Interface](https://github.com/daverbk/jmc/tree/main/12-lambda#the-supplier-interface)\n        * [Valid Lambda Declarations](https://github.com/daverbk/jmc/tree/main/12-lambda#valid-lambda-declarations)\n        * [Method Reference](https://github.com/daverbk/jmc/tree/main/12-lambda#method-reference)\n            * [Deferred Method Invocation](https://github.com/daverbk/jmc/tree/main/12-lambda#deferred-method-invocation)\n            * [For static methods](https://github.com/daverbk/jmc/tree/main/12-lambda#for-static-methods)\n            * [For a Bounded Receiver](https://github.com/daverbk/jmc/tree/main/12-lambda#for-a-bounded-receiver)\n            * [For an Unbounded Receiver](https://github.com/daverbk/jmc/tree/main/12-lambda#for-an-unbounded-receiver)\n    * [Convenience Methods](https://github.com/daverbk/jmc/tree/main/12-lambda#convenience-methods)\n    * [Comparator's additional helper methods](https://github.com/daverbk/jmc/tree/main/12-lambda#comparators-additional-helper-methods)\n\n## Collections\n* [Collections](https://github.com/daverbk/jmc/tree/main/13-collections#notes)\n    * [The Big Picture](https://github.com/daverbk/jmc/tree/main/13-collections#the-big-picture)\n    * [The `Collection` Interface](https://github.com/daverbk/jmc/tree/main/13-collections#the-collection-interface)\n        * [`Collection` and `List`](https://github.com/daverbk/jmc/tree/main/13-collections#collection-and-list)\n        * [`List` implementations](https://github.com/daverbk/jmc/tree/main/13-collections#list-implementations)\n        * [`Queue`](https://github.com/daverbk/jmc/tree/main/13-collections#queue)\n        * [`Set`](https://github.com/daverbk/jmc/tree/main/13-collections#set)\n            * [`HashSet`, `LinkedHashSet`, `EnumSet`](https://github.com/daverbk/jmc/tree/main/13-collections#hashset-linkedhashset-enumset)\n            * [When creating `hashCode()`](https://github.com/daverbk/jmc/tree/main/13-collections#when-creating-hashcode)\n            * [`TreeSet`](https://github.com/daverbk/jmc/tree/main/13-collections#treeset)\n                * [Time complexity](https://github.com/daverbk/jmc/tree/main/13-collections#time-complexity)\n                * [Interface hierarchy](https://github.com/daverbk/jmc/tree/main/13-collections#interface-hierarchy)\n                * [`SortedSet` methods](https://github.com/daverbk/jmc/tree/main/13-collections#sortedset-methods)\n                * [`NavigableSet` methods](https://github.com/daverbk/jmc/tree/main/13-collections#navigableset-methods)\n                * [When to use](https://github.com/daverbk/jmc/tree/main/13-collections#when-to-use)\n    * [`Map`](https://github.com/daverbk/jmc/tree/main/13-collections#map)\n        * [Implementation](https://github.com/daverbk/jmc/tree/main/13-collections#implementation)\n        * [`HashMap`, `LinkedHashMap`](https://github.com/daverbk/jmc/tree/main/13-collections#hashmap-linkedhashmap)\n        * [`TreeMap`](https://github.com/daverbk/jmc/tree/main/13-collections#treemap)\n            * [`TreeMap`'s View collections](https://github.com/daverbk/jmc/tree/main/13-collections#treemaps-view-collections)\n            * [`EnumSet` and `EnumMap`](https://github.com/daverbk/jmc/tree/main/13-collections#enumset-and-enummap)\n                * [`EnumSet`](https://github.com/daverbk/jmc/tree/main/13-collections#enumset)\n                * [Two Types of `EnumSet` implementations](https://github.com/daverbk/jmc/tree/main/13-collections#two-types-of-enumset-implementations)\n                * [`EnumMap`](https://github.com/daverbk/jmc/tree/main/13-collections#enummap)\n\n## Immutables\n* [Immutables](https://github.com/daverbk/jmc/tree/main/14-immutables)\n    * [Mutable vs Immutable](https://github.com/daverbk/jmc/tree/main/14-immutables#mutable-vs-immutable)\n        * [Immutable Objects - Advantages](https://github.com/daverbk/jmc/tree/main/14-immutables#immutable-objects---advantages)\n        * [Immutable Objects - Disadvantages](https://github.com/daverbk/jmc/tree/main/14-immutables#immutable-objects---disadvantages)\n    * [`final`](https://github.com/daverbk/jmc/tree/main/14-immutables#final)\n        * [`final` on methods](https://github.com/daverbk/jmc/tree/main/14-immutables#final-on-methods)\n        * [`final` on variables](https://github.com/daverbk/jmc/tree/main/14-immutables#final-on-variables)\n    * [How to declare a class to produce immutable objects](https://github.com/daverbk/jmc/tree/main/14-immutables#how-to-declare-a-class-to-produce-immutable-objects)\n    * [Defensive Copies](https://github.com/daverbk/jmc/tree/main/14-immutables#defensive-copies)\n    * [Shallow Copy vs Deep Copy](https://github.com/daverbk/jmc/tree/main/14-immutables#shallow-copy-vs-deep-copy)\n    * [Unmodifiable Collections vs Unmodifiable Collection Views](https://github.com/daverbk/jmc/tree/main/14-immutables#unmodifiable-collections-vs-unmodifiable-collection-views)\n    * [The instance initializer block](https://github.com/daverbk/jmc/tree/main/14-immutables#the-instance-initializer-block)\n        * [Static Initializers](https://github.com/daverbk/jmc/tree/main/14-immutables#static-initializers)\n    * [Record Constructors](https://github.com/daverbk/jmc/tree/main/14-immutables#record-constructors)\n        * [`Compact`](https://github.com/daverbk/jmc/tree/main/14-immutables#compact)\n    * [`javap`](https://github.com/daverbk/jmc/tree/main/14-immutables#javap)\n    * [`final` classes](https://github.com/daverbk/jmc/tree/main/14-immutables#final-classes)\n    * [`sealed` classes](https://github.com/daverbk/jmc/tree/main/14-immutables#sealed-classes)\n\n## IO\n* [IO](https://github.com/daverbk/jmc/tree/main/18-io#notes)\n    * [Exceptions](https://github.com/daverbk/jmc/tree/main/18-io#exceptions)\n        * [Checked Exception](https://github.com/daverbk/jmc/tree/main/18-io#checked-exception)\n            * [LBYL and EAFP](https://github.com/daverbk/jmc/tree/main/18-io#lbyl-and-eafp)\n        * [Unchecked Exception](https://github.com/daverbk/jmc/tree/main/18-io#unchecked-exception)\n        * [`finally`](https://github.com/daverbk/jmc/tree/main/18-io#finally)\n        * [Try-with-resources](https://github.com/daverbk/jmc/tree/main/18-io#try-with-resources)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaverbk%2Fjmc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaverbk%2Fjmc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaverbk%2Fjmc/lists"}