├── .gitignore
├── .idea
├── .gitignore
├── misc.xml
└── modules.xml
├── belajar-java-generic.iml
└── src
└── programmer
└── zaman
└── now
└── generic
├── MyData.java
├── Pair.java
├── Person.java
├── application
├── ArrayHelperApp.java
├── ComparableApp.java
├── ComparatorApp.java
├── ConstraintApp.java
├── ContravariantApp.java
├── CovariantApp.java
├── GenericClassApp.java
├── InvariantApp.java
├── MultipleConstraintApp.java
├── PairApp.java
├── TypeErasureApp.java
└── WildcardApp.java
└── util
└── ArrayHelper.java
/.gitignore:
--------------------------------------------------------------------------------
1 | out
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Datasource local storage ignored files
5 | /dataSources/
6 | /dataSources.local.xml
7 | # Editor-based HTTP Client requests
8 | /httpRequests/
9 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/belajar-java-generic.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/MyData.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic;
2 |
3 | public class MyData {
4 |
5 | private T data;
6 |
7 | public MyData(T data) {
8 | this.data = data;
9 | }
10 |
11 | public T getData() {
12 | return data;
13 | }
14 |
15 | public void setData(T data) {
16 | this.data = data;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/Pair.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic;
2 |
3 | public class Pair {
4 |
5 | private T first;
6 |
7 | private U second;
8 |
9 | public Pair(T first, U second) {
10 | this.first = first;
11 | this.second = second;
12 | }
13 |
14 | public T getFirst() {
15 | return first;
16 | }
17 |
18 | public void setFirst(T first) {
19 | this.first = first;
20 | }
21 |
22 | public U getSecond() {
23 | return second;
24 | }
25 |
26 | public void setSecond(U second) {
27 | this.second = second;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/Person.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic;
2 |
3 | public class Person implements Comparable {
4 |
5 | private String name;
6 | private String address;
7 |
8 | public Person(String name, String address) {
9 | this.name = name;
10 | this.address = address;
11 | }
12 |
13 | public String getName() {
14 | return name;
15 | }
16 |
17 | public void setName(String name) {
18 | this.name = name;
19 | }
20 |
21 | public String getAddress() {
22 | return address;
23 | }
24 |
25 | public void setAddress(String address) {
26 | this.address = address;
27 | }
28 |
29 | @Override
30 | public int compareTo(Person o) {
31 | return this.name.compareTo(o.name);
32 | }
33 |
34 | @Override
35 | public String toString() {
36 | return "Person{" +
37 | "name='" + name + '\'' +
38 | ", address='" + address + '\'' +
39 | '}';
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/application/ArrayHelperApp.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic.application;
2 |
3 | import programmer.zaman.now.generic.util.ArrayHelper;
4 |
5 | public class ArrayHelperApp {
6 | public static void main(String[] args) {
7 |
8 | String[] names = {"Eko", "Kurniawan", "Khannedy"};
9 | Integer[] numbers = {1, 2, 3, 4, 5};
10 |
11 | System.out.println(
12 | ArrayHelper.count(names)
13 | );
14 |
15 | System.out.println(
16 | ArrayHelper.count(numbers)
17 | );
18 |
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/application/ComparableApp.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic.application;
2 |
3 | import programmer.zaman.now.generic.Person;
4 |
5 | import java.util.Arrays;
6 |
7 | public class ComparableApp {
8 | public static void main(String[] args) {
9 |
10 | Person[] people = {
11 | new Person("Eko", "Indonesia"),
12 | new Person("Budi", "Indonesia"),
13 | new Person("Joko", "Indonesia")
14 | };
15 |
16 | Arrays.sort(people);
17 |
18 | System.out.println(Arrays.toString(people));
19 |
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/application/ComparatorApp.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic.application;
2 |
3 | import programmer.zaman.now.generic.Person;
4 |
5 | import java.util.Arrays;
6 | import java.util.Comparator;
7 |
8 | public class ComparatorApp {
9 | public static void main(String[] args) {
10 |
11 | Person[] people = {
12 | new Person("Eko", "Indonesia"),
13 | new Person("Budi", "Indonesia"),
14 | new Person("Joko", "Indonesia")
15 | };
16 |
17 | Comparator comparator = new Comparator() {
18 | @Override
19 | public int compare(Person o1, Person o2) {
20 | return o1.getName().compareTo(o2.getName());
21 | }
22 | };
23 |
24 | Arrays.sort(people, comparator);
25 |
26 | System.out.println(Arrays.toString(people));
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/application/ConstraintApp.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic.application;
2 |
3 | public class ConstraintApp {
4 | public static void main(String[] args) {
5 |
6 | NumberData integerNumberData = new NumberData<>(1);
7 | NumberData longNumberData = new NumberData<>(1L);
8 |
9 | // NumberData stringNumberData = new NumberData("Eko"); // ERROR
10 |
11 | }
12 |
13 |
14 | public static class NumberData{
15 |
16 | private T data;
17 |
18 | public NumberData(T data) {
19 | this.data = data;
20 | }
21 |
22 | public T getData() {
23 | return data;
24 | }
25 |
26 | public void setData(T data) {
27 | this.data = data;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/programmer/zaman/now/generic/application/ContravariantApp.java:
--------------------------------------------------------------------------------
1 | package programmer.zaman.now.generic.application;
2 |
3 | import programmer.zaman.now.generic.MyData;
4 |
5 | public class ContravariantApp {
6 | public static void main(String[] args) {
7 |
8 | MyData