我正在尝试编写一个自定义 UI 组件(在 android 上),它将显示一个文本编辑控件以及两个可以向上或向下单击的按钮。向上增加编辑控件中的数字,向下减少它。
我希望这个类在数字类型上是通用的,即我想将这个类专门用于 int 和 float 类型。
我一直在阅读这个不错的Java 泛型教程,但我的特定实现似乎没有编译。这是我得到的:
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++,我对泛型理解得足够好,并且知道两者之间的一些差异。我只需要语法方面的帮助。
我尝试更改为:
// "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”的语法错误,此令牌之后的预期尺寸”