jfinal-4.9.01 自定义MapGetter 编译失败

新建一个HashMapGetter

package com.litong.jfinal.getter;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.jfinal.core.Action;
import com.jfinal.core.Controller;
import com.jfinal.core.paragetter.ParaGetter;

/**
 * @author bill robot
 * @date 2020年8月18日_上午9:15:49 
 * @version 1.0 
 * @desc
 */
public class HashMapGetter extends ParaGetter<HashMap<String, String>> {

  public HashMapGetter(String parameterName, String defaultValue) {
    super(parameterName, defaultValue);
  }

  @Override
  public HashMap<String, String> get(Action action, Controller c) {
    HashMap<String, String> retval = new HashMap<String, String>();
    Map<String, String[]> paraMap = c.getParaMap();
    for (Entry<String, String[]> entry : paraMap.entrySet()) {
      String[] values = entry.getValue();
      String value = (values != null && values.length > 0) ? values[0] : null;
      retval.put(entry.getKey(), "".equals(value) ? null : value);
    }
    return retval;
  }

  @Override
  protected HashMap<String, String> to(String v) {
    return null;
  }
}

The method regist(Class<T>, Class<? extends ParaGetter<T>>, String) in the type ParaProcessorBuilder is not applicable for the arguments (Class<HashMap>, Class<HashMapGetter>, null)

在configConstant中注册

ParaProcessorBuilder.me.regist(HashMap<String,String>.class, HashMapGetter.class, null);

注册的代码出错

image.png

编译出现的错误如下

The method regist(Class<T>, Class<? extends ParaGetter<T>>, String) in the type ParaProcessorBuilder is not applicable for the arguments (Class<HashMap>, Class<HashMapGetter>, null)


评论区

lxhxka

2020-08-18 11:11

去掉泛型

杜福忠

2020-08-18 11:15

public class MapGetter extends ParaGetter
ParaProcessorBuilder.me.regist(Map.class, MapGetter.class, null);
public void kv(Map kv){}

杜福忠

2020-08-18 11:17

get 方法里面可以换成 return c.getKv(); Kv也是继承HashMap

热门反馈

扫码入社