求助 ,困扰啊 小弟 java 基础不是很扎实 现在碰到一个问题
TypelistType=newTypeToken<LinkedList<User>>(){}.getType();Type是java里的reflect包的Type,Ty...
Type listType = new TypeToken<LinkedList<User>>(){}.getType();
Type是java里的reflect包的Type ,TypeToken 是google提供的一个解析Json数据的类库中一个类
问题1:如果我没有写大括号{};就是TypeToken<LinkedList<User>>()后面的这个{},eclipse会报出 构造函数不可见,加上就好了,可是我在自己创建的2个测试类里
这样做就不行,如果构造是private的,加不加大括号都不行这是为什么
问题2:通常情况下,不加大括号是什么情况?加上又是什么情况,他们的含义是什么,作用是什么,望高手回答下 小弟感激不尽~!
不加大括号的比如
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_text_entry)
.setView(textEntryView)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked cancel so do some stuff */
}
})
.create();
我有些太混乱了 望高人指点
我要经验之谈,不要复制黏贴 谢谢合作! 展开
Type是java里的reflect包的Type ,TypeToken 是google提供的一个解析Json数据的类库中一个类
问题1:如果我没有写大括号{};就是TypeToken<LinkedList<User>>()后面的这个{},eclipse会报出 构造函数不可见,加上就好了,可是我在自己创建的2个测试类里
这样做就不行,如果构造是private的,加不加大括号都不行这是为什么
问题2:通常情况下,不加大括号是什么情况?加上又是什么情况,他们的含义是什么,作用是什么,望高手回答下 小弟感激不尽~!
不加大括号的比如
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_text_entry)
.setView(textEntryView)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked cancel so do some stuff */
}
})
.create();
我有些太混乱了 望高人指点
我要经验之谈,不要复制黏贴 谢谢合作! 展开
1个回答
展开全部
不加大括号表示很普通的new一个对象。。如果那个类的构造方法是私有的。。肯定不能直接new了。。就会编译报错。。
加上大括号表示你new了一个匿名内部类的对象。。比如new TypeToken<LinkedList<User>>(){}。。表示你new的是一个匿名内部类的对象。。这个匿名类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。
主要你不能理解的原因我想是你不了解内部类。。多看内部类的知识就会明白了。。new TypeToken<LinkedList<User>>(){}匿名内部类常用在监听里面。。比如我们给一个按钮加监听。。比如
JButton btn = new JButton("test");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。
希望能帮到你吧。。如果还有不明白就HI我吧。。
加上大括号表示你new了一个匿名内部类的对象。。比如new TypeToken<LinkedList<User>>(){}。。表示你new的是一个匿名内部类的对象。。这个匿名类继承自TypeToken类。。你可以在大括号里面像写其他普通类代码一样随意写代码。。你可以在里面定义个方法等等。。
主要你不能理解的原因我想是你不了解内部类。。多看内部类的知识就会明白了。。new TypeToken<LinkedList<User>>(){}匿名内部类常用在监听里面。。比如我们给一个按钮加监听。。比如
JButton btn = new JButton("test");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btn.addActionListener()方法接受的是一个ActionListener类型的对象。。而ActionListener是一个接口。。不能直接new。。所以本来我们应该写一个类实现ActionListener接口。。然后这里给他传一个那个实现类的对象。。但是。。我们不想那么麻烦了。。因为这种情况太多。。所以我们直接在这里创建了那个类。。之所以叫匿名。。就是我们没有给他取名字就让他叫ActionListener接口的名字。。然后在这里实现那个方法。。
希望能帮到你吧。。如果还有不明白就HI我吧。。
追问
嗯 清楚了~!!! 我经常这么用 ,只不过突然意识到 自己不是很清楚的理解,然后越想越乱,主要是基础不好 嘿嘿
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询