Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如果”怎么办;";代码中没有定义?_Java_Generics - Fatal编程技术网

Java “如果”怎么办;";代码中没有定义?

Java “如果”怎么办;";代码中没有定义?,java,generics,Java,Generics,这是我目前掌握的代码。它将映射转换为对象,并按预期运行,没有错误 但我有一个问题,关于如何使用通用工具。任何重播都将不胜感激 1。为什么没有错误发生,虽然没有通用的“T”是在方法中还是在代码的中间?< /强> public static <T> T convertMapToObject(Map<String, Object> map, Object obj){ try { Iterator<String

这是我目前掌握的代码。它将映射转换为对象,并按预期运行,没有错误

但我有一个问题,关于如何使用通用工具。任何重播都将不胜感激

1。为什么没有错误发生,虽然没有通用的“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);
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;