Coverage Summary for Class: Generics (dev.suresh.generics)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
Generics |
0%
(0/1)
|
0%
(0/5)
|
|
0%
(0/24)
|
0%
(0/93)
|
package dev.suresh.generics;
import static java.lang.System.out;
import java.util.List;
public class Generics {
void main() {
var emp = new Employee("Employee-1");
out.println(emp);
var mgr = new Manager("Manager-1");
out.println(mgr);
var dir = new Director("Director-1");
out.println(dir);
var empList = List.of(emp);
var mgrList = List.of(mgr);
var dirList = List.of(dir);
printDetails(empList);
printDetails(mgrList);
printDetails(dirList);
// LongAdder
// test(dirList);
// test(mgrList);
// Generics reification trick
m(List.of());
m(List.of(1));
m(List.of("1"));
m(List.<Boolean>of());
m(List.of(List.of("")));
}
private static void printDetails(Object o) {
out.println(o.hashCode());
out.println(System.identityHashCode(o));
out.println(o.getClass());
out.println("-----------");
}
private static void test(List<Employee> list) {
list.add(new Director("hhh"));
}
/** Generics reification trick. This won't work for multi-level generics though */
@SafeVarargs
public static <T> void m(Iterable<T> itr, T... reify) {
out.println(reify.getClass().componentType());
}
}