BAEL-2517
This commit is contained in:
parent
ed793f68ec
commit
0c54413807
|
@ -13,4 +13,32 @@
|
|||
<name>core-java-lang-oop-generics</name>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>${maven-compiler-plugin.version}</version>
|
||||
<configuration>
|
||||
<source>${maven.compiler.source}</source>
|
||||
<target>${maven.compiler.target}</target>
|
||||
<compilerArguments>
|
||||
<Xlint:unchecked/>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,45 @@
|
|||
package com.baeldung.uncheckedconversion;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class UncheckedConversion {
|
||||
public static List getRawList() {
|
||||
List result = new ArrayList();
|
||||
result.add("I am the 1st String.");
|
||||
result.add("I am the 2nd String.");
|
||||
result.add("I am the 3rd String.");
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List getRawListWithMixedTypes() {
|
||||
List result = new ArrayList();
|
||||
result.add("I am the 1st String.");
|
||||
result.add("I am the 2nd String.");
|
||||
result.add("I am the 3rd String.");
|
||||
result.add(new Date());
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> rawCollection) {
|
||||
List<T> result = new ArrayList<>(rawCollection.size());
|
||||
for (Object o : rawCollection) {
|
||||
try {
|
||||
result.add(clazz.cast(o));
|
||||
} catch (ClassCastException e) {
|
||||
// log the exception or other error handling
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static <T> List<T> castList2(Class<? extends T> clazz, Collection<?> rawCollection) throws ClassCastException {
|
||||
List<T> result = new ArrayList<>(rawCollection.size());
|
||||
for (Object o : rawCollection) {
|
||||
result.add(clazz.cast(o));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.baeldung.uncheckedconversion;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UncheckedConversionUnitTest {
|
||||
|
||||
@Test
|
||||
public void givenRawList_whenAssignToTypedList_shouldHaveCompilerWarning() {
|
||||
List<String> fromRawList = UncheckedConversion.getRawList();
|
||||
Assert.assertEquals(3, fromRawList.size());
|
||||
Assert.assertEquals("I am the 1st String.", fromRawList.get(0));
|
||||
}
|
||||
|
||||
@Test(expected = ClassCastException.class)
|
||||
public void givenRawList_whenListHasMixedType_shouldThrowClassCastException() {
|
||||
List<String> fromRawList = UncheckedConversion.getRawListWithMixedTypes();
|
||||
Assert.assertEquals(4, fromRawList.size());
|
||||
Assert.assertFalse(fromRawList.get(3).endsWith("String."));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenRawList_whenAssignToTypedListAfterCallingCastList_shouldOnlyHaveElementsWithExpectedType() {
|
||||
List rawList = UncheckedConversion.getRawListWithMixedTypes();
|
||||
List<String> strList = UncheckedConversion.castList(String.class, rawList);
|
||||
Assert.assertEquals(4, rawList.size());
|
||||
Assert.assertEquals("One element with the wrong type has been filtered out.", 3, strList.size());
|
||||
Assert.assertTrue(strList.stream().allMatch(el -> el.endsWith("String.")));
|
||||
}
|
||||
|
||||
@Test(expected = ClassCastException.class)
|
||||
public void givenRawListWithWrongType_whenAssignToTypedListAfterCallingCastList2_shouldThrowException() {
|
||||
List rawList = UncheckedConversion.getRawListWithMixedTypes();
|
||||
UncheckedConversion.castList2(String.class, rawList);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue