Raw Type example in Java
Raw Type
A raw type is the name of a generic interface or class without any type of arguments. For example, given the generic class name SingleLinkedList Node class:
public class Node<T> {
public T value;
...
}
public class SingleLinkedList<T> {
private Node<T> head;
private int size;
....
}
To create a parameterized type of SingleLinkedList<T> you need to supply an actual type for the type parameter T as shown below:
SingleLinkedList<Integer> intList = new SingleLinkedList<Integer>() ;
If you omit the type argument, you create a raw type for the list as shown below:
SingleLinkedList rawList = new SingleLinkedList<>();
SingleLinkedList is a raw type. References to generic type SingleLinkedList<T> should be parameterized as shown above.
Example
You can assign a parameterized type to its raw type:
SingleLinkedList<String> stringList = new SingleLinkedList<>();
SingleLinkedList rawList = stringBox; // This is ok
But if you assign a raw type to a parameterized type, you get a warning:
SingleLinkedList rawList = new SingleLinkedList(); // rawList is a raw type of SingleLinkedList<T>
SingleLinkedList<Integer> intList = rawList; // You get warning
Type safety: The expression of type SingleLinkedList needs unchecked conversion to conform to SingleLinkedList<Integer>
You also get a warning if you use a raw type to invoke generic methods defined in the corresponding generic type:
SingleLinkedList<String> stringList = new SingleLinkedList<>();
SingleLinkedList rawList = stringList;
rawList.addElementToTail(“TestingDocs”); // you get warning
Type safety: The method addElementToTail(Object) belongs to the raw type SingleLinkedList. References to generic type SingleLinkedList<T> should be parameterized
Sample Automation methods that tests both Integer and String single linked lists are shown below:
Sample JUnit Automation methods
package com.javaautomation.questions;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class SampleSingleLinkedListTest {
SingleLinkedList<Integer> intList;
SingleLinkedList<String> stringList;
int beforeSize ;
int afterSize ;
@Before
public void setUp() throws Exception {
intList = new SingleLinkedList<Integer>() ;
intList.addElementToTail(35);
intList.addElementToTail(99);
stringList = new SingleLinkedList<String>() ;
stringList.addElementToTail("http://");
stringList.addElementToTail("www.");
stringList.addElementToTail("TestingDocs");
}
@Test
public void addIntTest() {
beforeSize = intList.size();
intList.addElementToTail(12);
afterSize = intList.size();
assertEquals(afterSize ,beforeSize+1);
}
@Test
public void addStringTest() {
beforeSize = stringList.size();
stringList.addElementToTail(".com");
afterSize = stringList.size();
assertEquals(afterSize ,beforeSize+1);
}
@Test
public void removeStringTest() {
System.out.println("List Before delete:");
stringList.printListElements();
beforeSize = stringList.size();
stringList.removeElement("www.");
afterSize = stringList.size();
System.out.println("List After delete:");
stringList.printListElements();
assertEquals(afterSize ,beforeSize-1);
}
}
