java中 匿名内部类有什么作用?

 我来答
万重山外山
2011-07-27 · TA获得超过233个赞
知道答主
回答量:95
采纳率:0%
帮助的人:74.3万
展开全部
java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。它的语法规则是这样的:

new interfacename(){......}; 或 new superclassname(){......};
下面接着前面继续举例子:

public class Goods3 {
public Contents cont(){
return new Contents(){
private int i = 11;
public int value() {
return i;
}
};
}
}
这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。

在java的事件处理的匿名适配器中,匿名内部类被大量的使用。例如在想关闭窗口时加上这样一句代码:

frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
有一点需要注意的是,匿名内部类由于没有名字,所以它没有构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化它的成员变量,有下面几种方法:

如果是在一个方法的匿名内部类,可以利用这个方法传进你想要的参数,不过记住,这些参数必须被声明为final。
将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。
在这个匿名内部类中使用初始化代码块。
沈阳java
2011-07-23 · TA获得超过1507个赞
知道小有建树答主
回答量:797
采纳率:50%
帮助的人:674万
展开全部
方便进行回调!匿名内部类在Java编程中用于回调的场景非常多!主要Java语言动态特性太少,不像其它语言具有很强的动态特性。所以,只能靠接口和匿名内部类进行回调编程!

冠尔Java 3G工程师就业培训!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tjglf
推荐于2017-10-15 · 超过22用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:69.5万
展开全部
你要去理解什么是内部类,内部类的作用,java的多态,什么是回调函数。
匿名内部类是当做函数的参数传递给方法的,在这个方法中,会用接口类型接受传入的匿名类,然后调用其方法,这是多态。原理其实是实现了回调。
因为他会调用你匿名内部类中的方法。
给你举个例子:手敲的代码,未经测试
interface InterfaceA{
String go();
}
class Test(){
public void prtGo(InterfaceA ia){
System.out.println(ia.o());
}
public static void main(String []args){
Test t = new Test();
t.prtGo(new InterfaceA(){
public String go(){
return "go";
}
});
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真诚下载
2011-07-30
知道答主
回答量:72
采纳率:0%
帮助的人:16.4万
展开全部
少命名一个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑衣要饭的
2011-07-23 · TA获得超过341个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:198万
展开全部
省事。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式