2014-03-07 24 views
0

我有3個部分的代碼。在此代碼中正確實現接口和類?

//IntArray = Class 
//IntSequence = Interface 
//MyClass = Class 

IntArray(有問題就在這裏) -

public IntSequence subSequence(int index, int size) { 
    MyClass s5 = new MyClass(size); 
     return null; 
    } 

IntSequence(接口)

public interface IntSequence { 
int length(); 
int get(int index); 
void set(int index, int value); 
IntSequence subSequence(int index, int size); 
} 

MyClass的

import java.util。*;

public class MyClass extends IntArray { 
    public MyClass(int size) { 
     super(size); 
    } 

    public static ArrayList<Integer> subSequence(int a1, int a2, int[] array) { 
     ArrayList<Integer> valuelist = new ArrayList<>(); 
     for(int i = a1; i <= (a2 + a1); i++) 
     { 
      if(i >= array.length) 
       break; 
      else 
       valuelist.add(array[i]); 
     } 
     return valuelist; 
    } 

} 

我的問題 - 我真的不知道如何可以使IntArray的subSequence方法的返回語句。

我想要做的就是調用MyClass的subSequence方法並獲取參數index,size和一個在IntArray中聲明的數組的參數的方法。有人可以提供解決方案來解決這個問題嗎?

+0

回報'valueList.toArray()' –

+0

請提供代碼IntArray類。此外,由於您在MyClass中擴展IntArray,因此您正在覆蓋整個subSequence()方法。你爲什麼使它變爲靜態的任何特定原因? – raVan

回答

1

這裏是你的API一個解決方案,充分利用公司的Java強大的泛型:

import java.util.*; 


public class Sequence<T> 
{ 
    private List<T> sequence=new ArrayList<T>(); 

    public int length() 
    { 
     return sequence.size(); 
    } 

    public T get(int index) 
    { 
     return sequence.get(index); 
    } 

    public void set(int index, T value) 
    { 
     sequence.set(index,value); 
    } 

    public List<T> subList(int startIndex, int size) 
    { 
     return sequence.subList(startIndex, startIndex+size); 
    } 

    public <T> T[] subArray(int startIndex, int size) 
    { 
     return (T[])subList(startIndex, size).toArray(); 
    } 
} 

你可以使用它像:

class MyClient 
{ 
    public static void main(String[] argv) 
    { 
     Sequence<Integer> intSeq = new Sequence<Integer>(); 
     intSeq.set(0,0); 
     intSeq.set(1,1); 
     int intValue = intSeq.get(1); 
     // ... 
     Integer[] intArray = intSeq.subArray(1,1); 

     Sequence<Double> doubleSeq = new Sequence<Double>(); 
     doubleSeq.set(0,1.1); 
     doubleSeq.set(1,2.2); 
     double doubleValue=doubleSeq.get(1); 
     // ... 
     Double[] doubleArray = doubleSeq.subArray(1,1); 
    }   
}