package jadx.samples;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestGenerics extends AbstractTest {
public List<String> strings;
public Class<?>[] classes;
public interface MyComparable<T> {
public int compareTo(T o);
}
public static class GenericClass implements MyComparable<String> {
@Override
public int compareTo(String o) {
return 0;
}
}
public static class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
public static Box<Integer> integerBox = new Box<Integer>();
public interface Pair<K, LongGenericType> {
public K getKey();
public LongGenericType getValue();
}
public static class OrderedPair<K, V> implements Pair<K, V> {
private final K key;
private final V value;
public OrderedPair(K key, V value) {
this.key = key;
this.value = value;
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
return value;
}
}
Pair<String, Integer> p1 = new OrderedPair<String, Integer>("8", 8);
OrderedPair<String, Box<Integer>> p = new OrderedPair<String, Box<Integer>>("primes", new Box<Integer>());
public static class Util {
// Generic static method
public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) {
return p1.getKey().equals(p2.getKey()) &&
p1.getValue().equals(p2.getValue());
}
}
public static boolean use() {
Pair<Integer, String> p1 = new OrderedPair<Integer, String>(1, "str1");
Pair<Integer, String> p2 = new OrderedPair<Integer, String>(2, "str2");
boolean same = Util.<Integer, String>compare(p1, p2);
return same;
}
public class NaturalNumber<T extends Integer> {
private final T n;
public NaturalNumber(T n) {
this.n = n;
}
public boolean isEven() {
return n.intValue() % 2 == 0;
}
}
class A {
}
interface B {
}
interface C {
}
class D<T extends A & B & C> {
}
public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
int count = 0;
for (T e : anArray) {
if (e.compareTo(elem) > 0) {
++count;
}
}
return count;
}
public static void process(List<? extends A> list) {
}
public static void printList(List<?> list) {
for (Object elem : list) {
System.out.print(elem + " ");
}
System.out.println();
}
public static void addNumbers(List<? super Integer> list) {
for (int i = 1; i <= 10; i++) {
list.add(i);
}
}
public class Node<T extends Comparable<T>> {
private final T data;
private final Node<T> next;
public Node(T data, Node<T> next) {
this.data = data;
this.next = next;
}
public T getData() {
return data;
}
}
private class TestConstructor implements Enumeration<String> {
private final TestGenerics a;
TestConstructor(TestGenerics a) {
this.a = a;
}
@Override
public boolean hasMoreElements() {
return false;
}
@Override
public String nextElement() {
return null;
}
}
public Enumeration<String> testThis() {
return new TestConstructor(this);
}
private List<String> test1(Map<String, String> map) {
List<String> list = new ArrayList<String>();
String str = map.get("key");
list.add(str);
return list;
}
public void test2(Map<String, String> map, List<Object> list) {
String str = map.get("key");
list.add(str);
}
public void test3(List<Object> list, int a, float[] b, String[] c, String[][][] d) {
}
@Override
public boolean testRun() throws Exception {
assertTrue(test1(new HashMap<String, String>()) != null);
// TODO: add other checks
return true;
}
public static void main(String[] args) throws Exception {
new TestGenerics().testRun();
}
}