Explorar el Código

warnings: generics

Mariusz Sieroń hace 6 años
padre
commit
24452c172a

+ 10 - 7
assira/src/main/java/net/ranides/assira/generic/TypeToken.java

@@ -59,7 +59,7 @@ import net.ranides.assira.reflection.impl.AClass;
  */
 public abstract class TypeToken<T> extends AClass<T> {
     
-    private final IClass<?> type;
+    private final IClass<T> type;
 
     /**
      * Tworzy nową instancję klasy TypeToken. Możliwe i sensowne tylko w formie
@@ -70,19 +70,22 @@ public abstract class TypeToken<T> extends AClass<T> {
      * </pre>
      *
      */
+    @SuppressWarnings("unchecked")
     protected TypeToken() {
         // typeinfo(class).params[0]
         // wstawiło by nam do kontekstu parametr "T" pobrany z deklaracji TypeTokena
         ParameterizedType ptype = (ParameterizedType)getClass().getGenericSuperclass();
-        this.type = IClass.typeinfo(ptype.getActualTypeArguments()[0]);
+        this.type = (IClass)IClass.typeinfo(ptype.getActualTypeArguments()[0]);
     }
-	
+
+    @SuppressWarnings("unchecked")
 	protected TypeToken(Type type) {
-		this.type = IClass.typeinfo(type);
+		this.type = (IClass)IClass.typeinfo(type);
 	}
-    
+
+    @SuppressWarnings("unchecked")
     protected TypeToken(IClass<?> type) {
-		this.type = type;
+		this.type = (IClass)type;
 	}
     
     @Override
@@ -157,7 +160,7 @@ public abstract class TypeToken<T> extends AClass<T> {
 
     @Override
     public IConstructors<T> constructors() {
-        return (IConstructors)type.constructors();
+        return type.constructors();
     }
 
     @Override

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/IArguments.java

@@ -23,7 +23,7 @@ public interface IArguments extends IElements<IArgument> {
     IClasses types();
     
     @Override
-    IExecutables parent();
+    IExecutables<? extends IExecutable> parent();
     
     Map<String, IArgument> map();
     

+ 3 - 2
assira/src/main/java/net/ranides/assira/reflection/IClass.java

@@ -21,9 +21,10 @@ import net.ranides.assira.reflection.util.ClassUtils;
  */
 @SuppressWarnings("PMD.TooManyDifferentMethods")
 public interface IClass<T> extends IElement, Comparable<IClass<?>> {
-    
+
+    @SuppressWarnings("raw")
     IClass<?> NULL = new AClass(IContext.DEFAULT){};
-    
+
     IClass<?> OBJECT = typeinfo(Object.class);
     
     /**

+ 2 - 1
assira/src/main/java/net/ranides/assira/reflection/IConstructors.java

@@ -19,7 +19,8 @@ import java.util.function.Predicate;
  * @author Ranides Atterwim <ranides@gmail.com>
  */
 public interface IConstructors<T> extends IExecutables<IConstructor<T>> {
-    
+
+    @SafeVarargs
     static <T> IConstructors<T> typeinfo(Constructor<T>... methods) {
         return FElements.newConstructors(methods);
     }

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/IExecutable.java

@@ -17,7 +17,7 @@ import java.util.List;
 public interface IExecutable extends IElement {
 
     @Override
-    IExecutables collect();
+    IExecutables<? extends IExecutable> collect();
     
     List<IClass<?>> params();
     

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/impl/AArguments.java

@@ -37,7 +37,7 @@ public class AArguments extends AElements<IArgument> implements IArguments {
     }
     
     @Override
-    public IExecutables parent() {
+    public IExecutables<? extends IExecutable> parent() {
         return FElements.newExecutables(AHints.EMPTY, stream(IArgument::parent));
     }
 

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/impl/AClass.java

@@ -56,7 +56,7 @@ public abstract class AClass<T> implements IClass<T> {
 
     @Override
     public IConstructors<T> constructors() {
-        return AConstructors.EMPTY;
+        return AConstructors.empty();
     }
 
     @Override

+ 8 - 2
assira/src/main/java/net/ranides/assira/reflection/impl/AConstructors.java

@@ -35,12 +35,18 @@ import java.util.stream.Collectors;
  */
 public class AConstructors<T> extends AElements<IConstructor<T>> implements IConstructors<T> {
 
+	@SuppressWarnings("raw")
     static final AConstructors EMPTY = FElements.newConstructors(AHints.EMPTY, CQueryBuilder.empty());
 
-    AConstructors(IHints hints, CQuery<IConstructor<T>> stream) {
+	@SuppressWarnings("unchecked")
+	static <T> AConstructors<T> empty() {
+		return EMPTY;
+	}
+
+	AConstructors(IHints hints, CQuery<IConstructor<T>> stream) {
 		super(hints, stream);
 	}
-    
+
     @Override
 	public List<String> names() {
         return list(IConstructor::name);

+ 1 - 0
assira/src/test/java/net/ranides/assira/collection/iterators/EnumerationUtilsTest.java

@@ -228,6 +228,7 @@ public class EnumerationUtilsTest {
         assertFalse(i.hasMoreElements());
     }
 
+    @SafeVarargs
     private static <T> Vector<T> vector(T... values) {
         return new Vector<>(Arrays.asList(values));
     }

+ 5 - 5
assira/src/test/java/net/ranides/assira/collection/suite/CollectionTester.java

@@ -120,19 +120,19 @@ public class CollectionTester<T> {
         Collection<T> target = f.apply(new int[]{1,2,3,4,5});
         Object[] e = $list(1,2,3,4,5).toArray();
         
-        assertArrayContentEquals(e, target.toArray((T[])new Object[0]));
-        assertArrayContentEquals(e, target.toArray((T[])new Object[3]));
+        assertArrayContentEquals(e, target.toArray(new Object[0]));
+        assertArrayContentEquals(e, target.toArray(new Object[3]));
         
         List<T> list = $list(1,2,3,4,5);
         list.add(null);
         list.add(null);
         list.add(null);
         Object[] e8 = list.toArray();
-        assertArrayContentEquals(e8, target.toArray((T[])new Object[8]));
+        assertArrayContentEquals(e8, target.toArray(new Object[8]));
     }
     
     private List<T> $list(int... values) {
-        return $var.list(values).into(new ArrayList<T>());
+        return $var.list(values).into(new ArrayList<>());
     }
     
     private static <Q> void assertContentEquals(Collection<Q> a, Collection<Q> b) {
@@ -142,7 +142,7 @@ public class CollectionTester<T> {
         assertTrue("assertContentEquals: b IN a", b.containsAll(a));
     }
     
-    private static void assertArrayContentEquals(Object[] a, Object[] b) {
+    private static <A,B> void assertArrayContentEquals(A[] a, B[] b) {
         List<Object> alist = Arrays.asList(a);
         List<Object> blist = Arrays.asList(b);
         assertTrue("assertContentEquals", alist.containsAll(blist) && blist.containsAll(alist));

+ 1 - 0
assira/src/test/java/net/ranides/assira/reflection/IMethodTest.java

@@ -23,6 +23,7 @@ import net.ranides.assira.reflection.mockup.MTFunction.MTRecord;
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
+@SuppressWarnings("ALL")
 public class IMethodTest {
     
     Set<IAttribute> ATTR_LAMBDA = IAttribute.collect(PUBLIC, STATIC, DECLARED, SYNTHETIC, LAMBDA);

+ 2 - 1
assira/src/test/java/net/ranides/assira/reflection/impl/RMethodTest.java

@@ -30,7 +30,7 @@ import static net.ranides.assira.junit.NewAssert.assertThrows;
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
-@SuppressWarnings({"PMD.AvoidDuplicateLiterals"})
+@SuppressWarnings({"PMD.AvoidDuplicateLiterals", "OptionalGetWithoutIsPresent"})
 public class RMethodTest {
     
     private static final String RECORD_TYPE = "net.ranides.assira.reflection.mockup.ForRMethod<java.lang.Float>.Record<java.lang.Double>";
@@ -78,6 +78,7 @@ public class RMethodTest {
         Assume.assumeThat(type, CoreMatchers.equalTo(RECORD_TYPE));
     }
     
+    @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
     @Test
     public void testMethodReturs() {
         // Ja pierdolę: uzupełniamy TypeParams poprawnie. Szok.