解决方案 »

  1.   

    这代码居然能通过编译?!你是怎么做到的?
    CheckerBase接口的Check方法返回的是List,实现里返回的是String
      

  2.   

    贴错了,修改。public interface CheckerBase<T> {
        String Check(T target);
    }
     
    public class AChecker implements CheckerBase<APOJO> {
        @Override
        public String Check(APOJO target) {
            // TODO check logic;
        }
    }
     
    public class BChecker implements CheckerBase<BPOJO> {
        @Override
        public String Check(BPOJO target) {
            // TODO check logic;
        }
    }
     
     
    public abstract class Monitorable {
        private List<CheckerBase<?>> checkers;   
     
        public void setCheckers(List<CheckerBase<?>> value){
            this.checkers=value;
        }
        public List<CheckerBase<?>> getCheckers(){
            return this.checkers;
        }
         
        public String CheckBy() {
            List<String> results = new ArrayList<String>();
            for(CheckerBase<?> checker : checkers){           
                results.addAll(checker.Check( this  ));
            }
            return results;   
        }
    }
     
     
    public class APOJO implements Monitorable{
        ......
    }
     
    public class BPOJO implements Monitorable{
        ......
    }
      

  3.   

    Monitorable.checkBy方法里面,返回值为string,但是程序里返回的是list啊。LZ再检查一下吧。
      

  4.   


    public interface CheckerBase<T> {
        String Check(T target);
    }
      
    public class AChecker implements CheckerBase<APOJO> {
        @Override
        public String Check(APOJO target) {
            // TODO check logic;
        }
    }
      
    public class BChecker implements CheckerBase<BPOJO> {
        @Override
        public String Check(BPOJO target) {
            // TODO check logic;
        }
    }
      
      
    public abstract class Monitorable {
        private List<CheckerBase<?>> checkers;   
      
        public void setCheckers(List<CheckerBase<?>> value){
            this.checkers=value;
        }
        public List<CheckerBase<?>> getCheckers(){
            return this.checkers;
        }
          
        public List<String> CheckBy() {
            List<String> results = new ArrayList<String>();
            for(CheckerBase<?> checker : checkers){           
                results.addAll(checker.Check( this  ));
            }
            return results;   
        }
    }
      
      
    public class APOJO implements Monitorable{
        ......
    }
      
    public class BPOJO implements Monitorable{
        ......
    }
      

  5.   


    public interface CheckerBase<T> {
        String Check(T target);
    }
    调整为如下:public interface CheckerBase<T extends Monitorable> {
        String Check(T target);
    }
      

  6.   

    擦,不识别。。再试试。
    public interface CheckerBase<<span style="color: #FF0000;">T extends Monitorable</span>> {
        String Check(T target);
    }
      

  7.   

    其实我可以把Monitorable修改成这样:public abstract class Monitorable {
    private List<CheckerBase<? super Monitorable>> checkers; public void setCheckers(List<CheckerBase<? super Monitorable>> value){
    this.checkers=value;
    }
    public List<CheckerBase<?  super Monitorable>> getCheckers(){
    return this.checkers;
    }

    public List<String> CheckBy() {
    List<String> results = new ArrayList<String>();
    for(CheckerBase<? super Monitorable> checker : checkers){
    results.addAll(checker.Check( this  ));
    }
    return results;
    }
    }
    但是,给他的checkers赋值的时候,就会出现错误: public static void main(String[] args) {
    List<CheckerBase<? super Monitorable>> checkers = new ArrayList<? super Monitorable>();
    checkers.add(new AChecker());
    myReceipt.setCheckers(checkers);
    }
    这段代码中 checkers.add(new AChecker());
    就会提示参数类型错误。
      

  8.   


    别用记事本了,错误一堆
    results.addAll(checker.Check( this  ));// addAll接收的是Collection,Check()返回的是String
    List<CheckerBase<? super Monitorable>> checkers = new ArrayList<? super Monitorable>();// 前后<>不匹配
      

  9.   


    别用记事本了,错误一堆
    results.addAll(checker.Check( this  ));// addAll接收的是Collection,Check()返回的是String
    List<CheckerBase<? super Monitorable>> checkers = new ArrayList<? super Monitorable>();// 前后<>不匹配

    唉,真愁人,咋这么多错误呢。