package com.github.sevntu.checkstyle.checks.design;
import java.io.Serializable; import java.util.Collection;
import java.util.Comparator; import java.util.List;
import java.util.Map;
import java.util.ArrayList;
class Wildscards
{
public <T> List<? super T> met1()
{
return null;
}
<T> List<? super T> met2()
{
return null;
}
protected <T> List<? super T> met3()
{
return null;
}
private <T> List<? super T> met4()
{
return null;
}
public <T> List<? extends T> met5()
{
return null;
}
<T> List<? extends T> met6()
{
return null;
}
protected <T> List<? extends T> met7()
{
return null;
}
private <T> List<? extends T> met8()
{
return null;
}
private <T> List<? extends T> met9()
{
return null;
}
public Class<? extends Integer> met10()
{
return Integer.class;
}
public Class<? super Integer> met11()
{
return Integer.class;
}
public Class<?> met12()
{
return Integer.class;
}
}
class NoWildcards
{
public void simple1()
{
}
public int simple2()
{
return 1;
}
public Object simple3()
{
return new Object();
}
<T> T simple4(T t)
{
return null;
}
<T extends Integer> T simple5(T t)
{
return null;
}
<T> List<T> simple6(T t)
{
return null;
}
}
class ClassWildGenericType<P>
{
public List<? extends P> get1()
{
return null;
}
public List<?> get2()
{
return null;
}
public static List<? extends Number> get3()
{
return null;
}
public static List<? super Number> get4()
{
return null;
}
public static List<?> get5()
{
return null;
}
public Map<? extends P, Integer> get6()
{
return null;
}
public Map<Integer, ? extends P> get7()
{
return null;
}
}
class BigGeneric<A, B, C, D>
{
}
class UsingBigGeneric<A, B, C, D>
{
final BigGeneric<?, B, C, D> get1()
{
return null;
}
synchronized BigGeneric<A, ?, C, D> get2()
{
return null;
}
strictfp BigGeneric<A, B, ?, D> get3()
{
return null;
}
native BigGeneric<A, B, C, ?> get4();
BigGeneric<? extends String, B, C, D> get5()
{
return null;
}
BigGeneric<A, ? extends String, C, D> get6()
{
return null;
}
BigGeneric<A, B, ? extends String, D> get7()
{
return null;
}
BigGeneric<A, B, C, ? extends String> get8()
{
return null;
}
BigGeneric<A, B, C, D> get9()
{
return null;
}
BigGeneric<? extends String, ? super String, C, D> get10()
{
return null;
}
}
class MultipleInterfacesInGeneric
{
<U extends Number & Serializable> List<U> mult1()
{
return null;
}
<U extends Number & Serializable> List<? extends U> mult2()
{
return null;
}
<U extends Number & Serializable> List<? super U> mult3()
{
return null;
}
}
class CheckIgnoreList {
Comparable<? extends Integer> opt1(){
return null;
}
Comparator<? extends Double> opt2(){
return null;
}
Collection<?> opt3(){
return null;
}
}
/////////////////////
class OuterClass {
class ZeroInnerClass {
public List<? extends Number> met1(){
return null;
}
protected List<? super Number> met2(){
return null;
}
private List<?> met3(){
return null;
}
List<Number> met4(){
return null;
}
}
abstract class FirstInnerClass {
public abstract List<? extends Number> met1();
protected abstract List<? super Number> met2();
abstract List<?> met3();
protected abstract List<Number> met4();
}
static class SecondInnerClass {
static List<? extends Number> met1(){
return null;
}
final List<? super Number> met2(){
return null;
}
synchronized List<?> met3(){
return null;
}
List<Number> met4(){
return null;
}
}
public static void main(String[] args) {
class ThirdInnerClass {
List<? extends Number> met1(){
return null;
}
List<? super Number> met2(){
return null;
}
List<?> met3(){
return null;
}
}
}
}
interface InterfaceTest{
void withoutWildcard1();
Map<Double,Integer> withoutWildcard2();
Map<?,Integer> getMap1();
Map<Double,?> getMap2();
Map<? extends Double,?> getMap3();
Map<?,? extends Double> getMap4();
Map<? super Double,?> getMap5();
Map<?,? super Double> getMap6();
Map<? extends Double, ? super Integer> getMap7();
}
class OuterTest{
private Cloneable t = new Cloneable(){
List<? extends Number> met1(){
return null;
}
public List<? super Number> met2(){
return null;
}
private List<?> met3(){
return null;
}
};
}
class MethodsWithAnnotations extends SomeClass {
@Deprecated public List<?> met1(){
return null;
}
@Override public List<?> met2(){
return null;
}
@SuppressWarnings("unchecked") public List<?> met3() {
return null;
}
@java.lang.Deprecated
@java.lang.Override
@SuppressWarnings("unused")
public List<?> met4() {
return null;
}
}
class GenericMethods {
public static <T extends Comparable<? super T>> T max(List<? extends T> t) {
return null;
}
}
class DeprecatedMethods {
@Deprecated
public static <E extends List<?>> Class<?> getArgumentClass(List<?> listener) {
return listener.getClass();
}
}
class MyClass<T> {}
class A extends MyClass<A>{}
class B extends A{}
public class InputForbidWildcardAsReturnTypeCheck
{
public static void main(String args[]) {
A objA = max(new ArrayList<A>());
B objB = max(new ArrayList<B>());
}
static <T extends MyClass<? super T>> T max(List<? extends T> list) {
return null;
}
}
abstract class SomeClass {
abstract List met2();
abstract List met4();
}