日期:2014-05-19  浏览次数:20798 次

关于java 中的protected <P, R>
第一个问题
protected <P, R> List<R> execute(Map<P, R> callback, P data) {return null;}
protected List<Object> execute(Map<Object, Object> callback, Object data) {return null;}

二 我写了个简单的程序:但编译不过,求指教!!!!!!!!
Java code
public abstract class TestR {

    protected <P, R> List<R> execute(Map<P, R> callback, P data) {
        List<R> cc = new ArrayList<R>();
        cc.add((R) "sadfw");
        
        return cc;
    }
}

public class TestB extends TestR{

    public static void main(String[] args) {
        System.out.println("cccc");
    }
    
    public void test() {
        Map<String, Object> dataMap = new HashMap<String, Object>();
        List<String> list = new ArrayList<String>();
        execute(dataMap, list);   // [color=#FF0000]报错,类型不匹配,该怎么使用??[/color]
    }
}


三 关于<P, R>的学习文档,

谢谢大家啦!!

------解决方案--------------------
探讨
二 我写了个简单的程序:但编译不过,求指教!!……

protected <P, R> List<R> execute(Map<P, R> callback, P data) {

Map<String, Object> dataMap = new HashMap<String, Object>();
List<String> list = new ArrayList<String>();
execute(dataMap, list); // 报错,类型不匹配,该怎么使用??

------解决方案--------------------
探讨
第一个问题
protected <P, R> List<R> execute(Map<P, R> callback, P data) {return null;}
protected List<Object> execute(Map<Object, Object> callback, Object data) {return null;}

第一问题是,两者之间的区别
忘写了

------解决方案--------------------
LS已经都说了,LZ只要能理解清楚P,R的关系就好了
protected <P, R> List<R> execute(Map<P, R> callback, P data) {
Map<String, Object> dataMap = new HashMap<String, Object>();
对于Map来说,P是String, R是Object
对于execute方法的参数来说,data要和Map的key的类型一样
execute(dataMap, list); //这里的list和dataMap的key的类型不一样,所以编译失败
也就是,定义和调用的时候,P,R的参数要一致
------解决方案--------------------
楼上都解了,我无话可说了!