Java “如果”怎么办;";代码中没有定义?
这是我目前掌握的代码。它将映射转换为对象,并按预期运行,没有错误 但我有一个问题,关于如何使用通用工具。任何重播都将不胜感激 1。为什么没有错误发生,虽然没有通用的“T”是在方法中还是在代码的中间?< /强>Java “如果”怎么办;";代码中没有定义?,java,generics,Java,Generics,这是我目前掌握的代码。它将映射转换为对象,并按预期运行,没有错误 但我有一个问题,关于如何使用通用工具。任何重播都将不胜感激 1。为什么没有错误发生,虽然没有通用的“T”是在方法中还是在代码的中间?< /强> public static <T> T convertMapToObject(Map<String, Object> map, Object obj){ try { Iterator<String
public static <T> T convertMapToObject(Map<String, Object> map, Object obj){
try {
Iterator<String> keyIter = map.keySet().iterator();
Method[] methods = obj.getClass().getMethods();
while(keyIter.hasNext()){
String key = keyIter.next();
String methodName = "set" + StringUtils.capitalize(key);
for(int i=0; i<methods.length; i++){
if(methodName.equals(methods[i].getName())){
Class<?> clazz = methods[i].getParameterTypes()[0]; //메서드 인수 타입
if (String.class == clazz){
methods[i].invoke(obj, String.valueOf(map.get(key)));
}
else {
methods[i].invoke(obj, map.get(key));
}
break;
}
}
}
return (T)obj;
} catch (Exception e) {
e.printStackTrace();
log.error(e);
}
return null;
}
---------------------------
FileEx f= convertMapToObject(map, fileEx);
2<方法中的code>类似于一个指示符,它通知编译此方法使用字符T作为泛型?我的理解是正确的?
public static <T> T convertMapToObject(Map<String, Object> map, Object obj){
try {
Iterator<String> keyIter = map.keySet().iterator();
Method[] methods = obj.getClass().getMethods();
while(keyIter.hasNext()){
String key = keyIter.next();
String methodName = "set" + StringUtils.capitalize(key);
for(int i=0; i<methods.length; i++){
if(methodName.equals(methods[i].getName())){
Class<?> clazz = methods[i].getParameterTypes()[0]; //메서드 인수 타입
if (String.class == clazz){
methods[i].invoke(obj, String.valueOf(map.get(key)));
}
else {
methods[i].invoke(obj, map.get(key));
}
break;
}
}
}
return (T)obj;
} catch (Exception e) {
e.printStackTrace();
log.error(e);
}
return null;
}
---------------------------
FileEx f= convertMapToObject(map, fileEx);
public static T convertMapToObject(映射映射,对象对象对象){
试一试{
迭代器keyIter=map.keySet().Iterator();
方法[]方法=obj.getClass().getMethods();
while(keyIter.hasNext()){
String key=keyIter.next();
String methodName=“set”+StringUtils.capitalize(键);
对于(int i=0;i
为什么在方法中或代码中间没有定义泛型“t”?< /LI>
它>>比其他任何东西都更符合惯例T是一种类型,就像E是一个元素(列表:元素列表)K是键,V是值(在地图中)谢谢你的回答。明白无误。
return (T) obj;