permaculture playing cards*
The moose likes Java in General and the fly likes Generics Doubt Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Generics Doubt" Watch "Generics Doubt" New topic
Author

Generics Doubt

Preetha Vasudevan
Ranch Hand

Joined: Sep 23, 2005
Posts: 33
Hi all
I have a major doubt about generics related to the following code shown below.This code is a question from javabeat.net generics mock exam.
code:
class Basket<E> {
private E element;

public void setElement(E x) {
element = x;
}

public E getElement() {
return element;
}
}

class Fruit {
}

class Apple extends Fruit {
}

class Orange extends Fruit {
}
class GeneTest{
public static void main(String args[]){

Basket<Fruit> basket = new Basket<Fruit>(); // 1
basket.setElement(new Apple()); // 2
Apple apple = basket.getElement(); // 3
}
The answer to the question is that The line 3 however will cause a runtime error. The result type of the methode getElement of Basket<Fruit> is Fruit. We cannot assign a Fruit to a variable of the type Apple without a cast.
According to me the answer to this code would be that it generates a compiler error at line 2.Because i thought that Basket class is parametarized to contain only Fruits.even though Apple class is a subclass of the Fruit class i thought as generics go against subtyping it would cause an compiler error.
can anyone explain this concept in a better way..

Thank you..
Jeff Albertson
Ranch Hand

Joined: Sep 16, 2005
Posts: 1780
Have you compiled the code? What was the result?


There is no emoticon for what I am feeling!
Preetha Vasudevan
Ranch Hand

Joined: Sep 23, 2005
Posts: 33
Hi jeff
I tried compiling the code and it gives me a compiler error saying incompatible type at line 3 of the code.My doublt is in line 2 .can we assign a subclass reference to the Basket class using generics.
Jeff Albertson
Ranch Hand

Joined: Sep 16, 2005
Posts: 1780
Yes, absolutely -- this is upcasting.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Generics Doubt
 
Similar Threads
method types in Generics
doubt in Generics question from javabeat.net
Generics doubt.
generics question from javabeat
Doubt About Generic