Type listType = new TypeToken(){}.getType();

不加大括号表示很普通的new一个对象。。如果那个类的构造方法是私有的。。肯定不能直接new了。。就会编译报错。。
加上大括号表示你new了一个匿名内部类的对象。。比如new TypeToken>(){}。。表示你new的是一个匿名内部类的对象。。这个匿名类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。

主要你不能理解的原因我想是你不了解内部类。。多看内部类的知识就会明白了。。new TypeToken>(){}匿名内部类常用在监听里面。。比如我们给一个按钮加监听。。比如
JButton btn = new JButton("test");
        btn.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				
			}
		});
 btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。
希望能帮到你吧。。如果还有不明白就HI我吧。。

你可能感兴趣的:(Type listType = new TypeToken(){}.getType();)