私はここで助けが切望されています。私はこの既存のコードをジェネリックスに移行することにしており、実際に壁に当たっています。どんな助けでも大歓迎です。このコードをGenericsに変換するにはどうすればよいですか?
既存のコードはアルゴリズムライブラリであり、車両のコンストラクタ(つまりBike.Java)を持つクラスがいくつか付いています。
私はさまざまなことを試しましたが、わかりません。私はいくつかの洞察力が大好きです。 Javaの8以来
public class Algo
{
/**
* Copies all objects from src to tgt, for which the predicate pred holds.
*
* @param src source list
* @param tgt target list
* @param pred unary predicate
*/
static public
void copyIf(List src, List tgt, UnaryPredicate pred)
{
for (Object obj : src)
{
if (pred.test(obj)) tgt.add(obj);
}
}
/**
* Copies all objects from src to tgt that are greater than yardstick.
*
* @param src source
* @param tgt target
* @param yardstick determines if objects in src should be copied to tgt.
*/
static public
void copyIfGreaterThan(List src, List tgt, final Comparable yardstick)
{
copyIf(src, tgt, new UnaryPredicate() {
public boolean test(Object o)
{
return yardstick.compareTo(o) < 0;
}
});
}
/**
* Finds a maximum object in lst.
*
* @param lst a list containing non-null references
* @return a maximum object in lst
*/
static public
Comparable findMax(List lst)
{
assert lst != null;
Comparable max = null;
Iterator iter = lst.iterator();
// handle first element
if (iter.hasNext())
max = (Comparable) iter.next();
// handle remaining elements
while (iter.hasNext())
{
assert max != null;
Comparable cand = (Comparable) iter.next();
if (max.compareTo(cand) < 0)
max = cand;
}
return max;
}
/**
* Adds the smaller of lhs and rhs to dst.
*
* @param lhs left hand side object
* @param rhs right hand side object
* @param dst destination list
*/
static public
void storeMin(Comparable lhs, Comparable rhs, List dst)
{
Comparable min = lhs;
if (min.compareTo(rhs) > 0) min = rhs;
dst.add(min);
}
/**
* swaps the elements at a and b in lst.
*
* @param lst a list
* @param a first location in lst
* @param b second location in lst
*/
static private
void swap(ArrayList objs, int a, int b)
{
Object tmp = objs.get(a);
objs.set(a, objs.get(b));
objs.set(b, tmp);
}
/**
* Sorts the elements in lst.
*
* @param lst an array list containing non-null references
*/
static public
void selectionSort(ArrayList lst)
{
for (int i = 0; i < lst.size(); ++i)
{
int min = i;
Comparable minobj = (Comparable) lst.get(min);
for (int j = i+1; j < lst.size(); ++j)
{
if (minobj.compareTo(lst.get(j)) > 0)
{
min = j;
minobj = (Comparable) lst.get(min);
}
}
swap(lst, min, i);
}
}
}
*私はさまざまなことをたくさん試しました。* –
コードを表示せずにバグについて質問しているので、私はこの質問をdownvotedしています。具体的なコードがなければ、問題は何かを推測することしかできません。これはあなたや将来の読者には役に立たないものです。問題の[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を表示するために質問を編集することができれば、このdownvoteは取り消されるかもしれません。 –
まず、すべてのコンパイラの警告を有効にします。それでは、特に「生のタイプ」について注意してください。 – VGR