ArrayList
の異なるタイプを含むカスタムクラスMultipleResult
を作成したいのですが、これを実装する方法がわかりません。 1つのオブジェクトに複数のArrayList
をカプセル化したい場合がありますが、ときどきArrayList<Float>
と他の時はArrayList<Integer>
を使用します。 私はArrayList<Object>
などの一般的な入力を宣言しようとしているが、これは私がやるincompatible types
エラー与える:任意のオブジェクトを含むArrayList
MultipleResult arrays = reduce(theInputValues,10);
ArrayList<Float> arrayA =arrays.getResultA();
方法はreduce
は、いくつかのArrayList<Float>
を生成し、MultipleResult
オブジェクトにそれらを置きます。これはMultipleResult
クラスです:@Kaostiasによってコメントで示唆したように
public class MultipleResult<T> {
private ArrayList<T> resultA;
private ArrayList<T> resultB;
private ArrayList<T> resultC;
private ArrayList<T> resultD;
public MultipleResult(ArrayList<T> arrayA, ArrayList<T> arrayB) {
resultA=arrayA;
resultB=arrayB;
}
public MultipleResult(ArrayList<T> arrayA, ArrayList<T> arrayB,
ArrayList<T> arrayC, ArrayList<T> arrayD) {
resultA=arrayA;
resultB=arrayB;
resultC=arrayC;
resultD=arrayD;
}
public ArrayList<T> getResultA() {
return resultA;
}
public ArrayList<T> getResultB() {
return resultB;
}
public ArrayList<T> getResultC() {
return resultC;
}
public ArrayList<T> getResultD() {
return resultD;
}
}
及び使用を次のようにMultipleResult
genericを作ることができます
private MultipleResult reduce(ArrayList<Float> theInput,Integer n){
ArrayList<Float> opens=new ArrayList<>();
ArrayList<Float> highs=new ArrayList<>();
ArrayList<Float> lows=new ArrayList<>();
ArrayList<Float> closes=new ArrayList<>();
Integer N = theInput.size();
for (int i=0;i<n;i++){
Integer nMin = Math.round((N/n)*i);
Integer nMax = Math.round((N/n)*(i+1))-1;
Float open=theInput.get(nMax);
Float high=theInput.get(nMin);
Float low=theInput.get(nMin);
Float close=theInput.get(nMin);
for(int j=nMin;j<=nMax;j++){
if (theInput.get(j)>high){
high=theInput.get(j);
}
if (theInput.get(j)<low){
low=theInput.get(j);
}
}
opens.add(i,open);
highs.add(i,high);
lows.add(i,low);
closes.add(i,close);
}
return new MultipleResult(opens,highs,lows,closes);
}
TL; DRあなたは 'Number'を試してみるかもしれません。 – Mena
または[**汎用タイプ**](https://docs.oracle.com/javase/tutorial/java/generics/types.html) – Kaostias