gpt4 book ai didi

Java 泛型 : Can't get syntax right

转载 作者:行者123 更新时间:2023-11-29 05:59:23 25 4
gpt4 key购买 nike

我正在尝试编写一个自定义 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 的声明中遇到以下编译器错误:

Cannot make a static reference to the non-static type 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();
}
};

这给出了“ token “int”的语法错误,此 token 后预期的尺寸”

最佳答案

这与语法无关,它与您的类型 TNumberPicker实例相关联这一事实有关>,而您的 TWO_DIGIT_FORMATTERstatic,因此不与 NumberPicker 的任何实例相关联。所以没有类型 T 可以引用。

关于Java 泛型 : Can't get syntax right,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com