例如,在C++中,我可以找到INT = 0,向量< INT> = 1,矢量< <矢量< INT>> = 2由以下:如何查找容器深度(例如:ArrayList <String> = 1,ArrayList <ArrayList <String>> = 2)?
#include <vector>
#include <stdlib.h>
template <typename T>
class Printer{
public:
static int print(){
return 0;
}
};
template <typename T,typename Alloc>
class Printer<std::vector<T,Alloc> >{
public:
static int print(){
return 1+Printer<T>::print();
}
};
int main(){
printf("%d\n",Printer<int>::print());
printf("%d\n",Printer<std::vector<int> >::print());
printf("%d\n",Printer<std::vector<std::vector<int> > >::print());
return 0;
}
,其不需要任何实例,例如:
std::vector<int> v;
要做到这一点。我怎样才能在Java中实现这个功能?我想:
public static void print(List<Integer> list){
}
public static <T> void print(List<? extends T> list) {
}
和
public static <T>void print(){
}
public static void print() {
}
但都表示 “这两种方法有同一消失”。我也考虑过使用如果其他像:
public static void print(Object obj) {
if(obj instanceof List){
List list=(List)obj;
for(Object obj2 : list){
print(obj2);
}
}else{
}
}
但我不能在函数中获取元素的类型。是否有可能在Java中做到这一点?
很多例子,但对我来说,如果你要显示实际的Java列表,以及你期望与他们发生什么,会更有帮助。不,Java的泛型不如C++模板强大。 – GhostCat