Java: Passing generic type to an another generic type class -
main.java : main class creating object of test of generic type test.java: generic class creating object of wrapper class of generic type wrapper.java: generic class of type passing string,long type creating test.java object . , passing long type creating object of wrapper class. main.java:
public class mainclass { test<string,long> test; mainclass() { test = new test<string,long>(){}; } public static void main(string[] arr) { mainclass m = new mainclass(); } }
test.java
public class test<t,u> { wrapper<u> mywrapper; test() { type type = this.getclass().getgenericsuperclass(); system.out.println("type: " + type.tostring()); type type1 = ((parameterizedtype)this.getclass().getgenericsuperclass()).getactualtypearguments()[0]; system.out.println("type1: " + type1.getclass().getname()); type[] types = ((parameterizedtype)type).getactualtypearguments(); (int = 0; < types.length; i++) { system.out.println("types[" + + "]: " + types[i].tostring()); } mywrapper = new wrapper<u>(){}; } }
wrapper.java
public class wrapper<u> { wrapper() { type type = this.getclass().getgenericsuperclass(); system.out.println("type: " + type.tostring()); type type1 = ((parameterizedtype)this.getclass().getgenericsuperclass()).getactualtypearguments()[0]; system.out.println("type1: " + type1.getclass().getname()); type[] types = ((parameterizedtype)type).getactualtypearguments(); (int = 0; < types.length; i++) { system.out.println("types[" + + "]: " + types[i].tostring()); } } }
and after executing program getting output as
type: test type1: java.lang.class types[0]: class java.lang.string types[1]: class java.lang.long type: wrapper *type1: sun.reflect.generics.reflectiveobjects.typevariableimpl types[0]: u*
so output can see wrapper class getting type u instead of long can see in test.java.
hope following program clarify doubt.
public class vmgeneric<a> { private objvariable; public vmgeneric(a localvariable) { objvariable = localvariable; } public string getnameofgenerictype() { return objvariable.getclass().getcanonicalname(); } public static void main(string[] args) { vmgeneric<string> o1 = new vmgeneric<>(""); vmgeneric<object> o2 = new vmgeneric<>(new object()); system.out.println(o1.getnameofgenerictype()); system.out.println(o2.getnameofgenerictype()); } }
Comments
Post a Comment