上下にクリックできる2つのボタンとともにテキスト編集コントロールを表示するカスタムUIコンポーネント(Android上)を作成しようとしています。上に移動すると編集コントロールの数値が増加し、下に移動すると減少します。
このクラスを数値型でジェネリックにしたい、つまりクラスを int 型と float 型に特化したい。
この素敵なJava Generics Tutorialを読んでいますが、私の特定の実装はコンパイルされていないようです。これが私が持っているものです:
public class NumberPicker<T> extends LinearLayout implements OnClickListener,
OnFocusChangeListener, OnLongClickListener {
public interface OnChangedListener<T> {
void onChanged(NumberPicker<T> picker, T oldVal, T newVal);
}
public interface Formatter<T> {
String toString(T value);
}
// Error: Cannot make a static reference to the non-static type T
public static final NumberPicker.Formatter<T> TWO_DIGIT_FORMATTER =
new NumberPicker.Formatter<T>() {
public String toString(T value) {
// Do something with T value
}
};
}
の宣言で次のコンパイラ エラーが発生しますTWO_DIGIT_FORMATTER
。
非静的型 T への静的参照を作成できません
誰かが構文を手伝ってくれませんか。C++ から来た私は、ジェネリックを十分に理解しており、2 つの違いのいくつかを認識しています。構文のヘルプが必要です。
私はに変更しようとしました:
// "Syntax error on token "int", Dimensions expected after this token"
public static final NumberPicker.Formatter<int> TWO_DIGIT_FORMATTER =
new NumberPicker.Formatter<int>() {
public String toString(int value) {
return mFmt.toString();
}
};
これにより、「トークン「int」の構文エラー、このトークンの後にディメンションが必要です」が表示されます