在下面的代码中,Type type
是什么意思,大括号用于什么?
Type type = new TypeToken<List<String>>(){}.getType();
List<String> list = converter.fromJson(jsonStringArray, type );
答案 0 :(得分:6)
Type
是一个班级。
new TypeToken<List<String>>() {
}.getType();
创建一个匿名内部类并在创建的对象上调用getType()
。
答案 1 :(得分:4)
这不是在函数调用之后,而是在构造函数调用之后。这条线
Type type = new TypeToken<List<String>>(){}.getType();
正在创建TypeToken
的匿名子类的实例,然后调用其getType()
方法。你可以用两行来做同样的事情:
TypeToken<List<String>> typeToken = new TypeToken<List<String>>(){};
Type type = typeToken.getType();
Java Tutorial Anonymous Subclasses有更多这方面的例子。这是一种有点特殊的用法,因为没有覆盖任何方法,也没有使用实例初始化块。 (有关实例初始化块的更多信息,请参阅Initializing Fields。)
答案 2 :(得分:1)
大括号是匿名类构造函数,在构造函数调用后使用。在里面你可以覆盖或创建一个方法。
示例:
private static class Foo {
public int baz() {
return 0;
}
}
public static void main(final String[] args) {
final Foo foo = new Foo() {
@Override
public int baz() {
return 1;
}
};
System.out.println(foo.baz());
}
输出:
1