2017-01-04 40 views
1

我在大學學習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並獲取此對象?我嘗試過參數化,但如果方法正確,我不知道如何解決。 感謝您的幫助。

+1

*「獲取的對象(USTC),這是私人的」 * - 什麼?我不明白你的意思(或代碼出現問題)。你如何「得到一個私人的對象」?據我可以告訴你傳遞的對象作爲參數? – UnholySheep

+0

嗨,問題是,從靜態私有類 – Nirual

+0

創建的對象被傳遞給其他類中的方法。但是,我該如何處理它呢? – Nirual

回答

0

正如評論中所述,ustC,憑藉在此上下文中調用句柄的方式是C類型,它實現了myList接口。這個接口暴露了獲取方法,並且對於你的句柄方法是可見的。

你到達你的意見的修改將允許你叫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); 
    } 
} 
+0

-------謝謝:) – Nirual