如何处理私有类的对象,得到参数

时间:2017-01-04 18:08:40

标签: java

我在大学学习Java,我必须做以下练习。 (简化示例)

import java.util.*;

public class A{
    private static class B{
        Integer b;
        private B(int b){this.b = b;}
    }

    private static class B_Comparable extends B implements     Comparable<B_Comparable> {
        private  B_Comparable(int b){super(b);}
        @Override
        public int compareTo(B_Comparable that) {
            return this.b.compareTo(that.b);
        }
    }

    private static class C<T> implements myList<T> { // see below
        private ArrayList<T> lst = new ArrayList<>();

        private static C<B_Comparable> createComparable() {
            C<B_Comparable> ust = new C<B_Comparable>();
            for (int i =0; i < 9; i++)
                ust.lst.add(new B_Comparable(i));
            return ust;
        }

        @Override
        public T fetch(int index){
             return lst.get(index);
        }
    }

    private void test(){
         C<B_Comparable> ustComparable = C.createComparable();
         A result = ClassD.handle(ustComparable,3,4);
    }
}

//--------------------------------------------------------

public class ClassD{
    public static <T, S> T handle( S ustC, int pos1, int pos2 ){ 
        // how can I compare elems of object ustC ?
        ustC.fetch(pos1).compareTo(ustC.fetch(pos2)); 
        //how can I fetch obj at pos1 ?
        return ustC.fetch(pos1);
    }

}

//-----------------------------------------

public interface myList<T> {
    T fetch(int index);
}

静态方法句柄获取私有的对象(ustC)。我怎么能够  使用方法,compareTo和fetch这个对象?我尝试了参数化,但如果它是正确的方法,我不知道如何解决。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的那样,ustC,由于在此上下文中调用句柄的方式是C类型,它实现了myList接口。此接口公开了fetch方法,并且对于handle方法是可见的。

您在评论中所做的修改可让您拨打fetch

//Solution 
public class ClassD { 
    public static <S extends Comparable> S handle(myList<S> ustC, int pos1, int pos2 ){
        int y = ustC.fetch(pos1).compareTo(ustC.fetch(pos2)); 
        return ustC.fetch(pos1);
    } 
}