簡體   English   中英

在此代碼中接口和類的正確實現?

[英]Proper implementation of an interface and a class in this code?

我有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);
}

我的課

導入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方法制作return語句。

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

這是利用Java強大的泛型的API解決方案:

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);
    }        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM