Java generics class cast exception -


i trying create class processes comparables. boiled down simplest code gives error when try instantiate class. couple of compile warnings (unchecked cast) when run program throws classcast exception. did @ of other questions on topic didnt come across useful.

public class gd<item extends comparable<item>> {    private item[] data;    private final int max_size = 200;    public gd() {       data = (item[]) new object[max_size];    }     public static void main(string[] args) {      gd<string> g = new gd<string>();    } } 

the problem lies here:

data = (item[]) new object[max_size]; 

you instantiating array of object , try cast array of item, throws exception because object not extend item class, because not implement comparable. instead is:

data = new item[max_size]; 

but can't because item generic type. if want create objects (or arrays of objects) of type dynamically, need pass class object gd class's constructor:

import java.lang.reflect.array;  public class gd<item extends comparable<item>> {    private item[] data;    private final int max_size = 200;    public gd(class<item> clazz) {       data = (item[]) array.newinstance(clazz, max_size);    }     public static void main(string[] args) {      gd<string> g = new gd<string>(string.class);    } } 

Comments

Popular posts from this blog

OpenCV OpenCL: Convert Mat to Bitmap in JNI Layer for Android -

android - org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope -

python - How to remove the Xframe Options header in django? -