这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中:
1:什么是泛型?
泛型就是广泛的类型,也是一种数据类型,而这种数据类型可以是任意类型,编写过程中当中不能确定类型,创建对象时必须指定具体类型,不指定也可以,但是会出现一些错误。
泛型是编译器行为,只能在编译期有效,如果能够跨过编译器,那么泛型就没有任何意义了。
2、泛型类
怎么定义泛型类?
在类后面加<>,<>中可以编写任意长度任意字符,不能是数值。(一般用26个大写英文字母表示)
泛型类 <具体类型> 变量名 = new 泛型类<>();
3怎么使用泛型
有以下几种使用场景以及放在那种位置
泛型只能定义引用数据类型,而不能使用基本数据类型
泛型类、泛型方法、泛型接口、泛型通配符
例如:作用在类上时( public class Animal <E> { E pet; } ) , 泛型跟在类后边,可以指定用了泛型的类内部的 pet 的类型。
作用在对象上时( Animal<Dog> str = new Animal<Dog>(); ) , 泛型跟在类后边 , 使得对象类的的 pet 属性为 Dog类型。
你可以尝试使用递归,你这个函数本身进行递归应该是没问题的
如果不想使用递归的话,就再写一个类似的函数用来处理第二级的泛型,不过这个方法不具有通用性,如果想实现真正的深度遍历,我建议还是递归吧
ParameterizedType pt = (ParameterizedType) thisgetClass()getGenericSuperclass(); Class modelClass = (Class) ptgetActualTypeArguments()[0]; // 通过反射生成实例 model = (T) modelClassnewInstance();
以上就是关于java中什么是泛型,怎么用泛型全部的内容,包括:java中什么是泛型,怎么用泛型、深度遍历复杂对象的属性值,用泛型方法如何实现如图、如何用通用泛型方法遍历复杂结构对象的所有属性值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)