概述
1.什么是内部匿名类
有时候需要一个类的实例来完成一些逻辑,比如Thread的内部匿名类,新起一个线程做数值计算。 这个实例只会调用一次,为了方便定义和调用,便产生了内部匿名类
2.内部匿名类的创建方式
new 父类构造器(参数列表) | 实现接口()
{
}
3.如何在外部调内部匿名类
public abstract class Person(){
public abstract void eat();
}
Person person = new Person(){
public void eat(){
print("I can eat ");
}
}
4.为什么内部匿名类的形参必须是final的
内部匿名类的编译实现
public class OuterClass$InnerClass {
public InnerClass(String name,String age){
this.InnerClass$name = name;
this.InnerClass$age = age;
}
public void display(){
System.out.println(this.InnerClass$name + "----" + this.InnerClass$age );
}
} 因为内部匿名类的构造器只会拷贝形参的引用,如果形参发生变化,内部匿名类其实是接收不到变化后的引用对象,所以为了避免理解上的差错,内部匿名类的形参必须是final的
5.如何在内部匿名类中做初始化
可以在内部匿名类中使用代码块,将初始化放入初始块中 public abstract class Person(){ public abstract void eat(); }
Person person = new Person(){
String name;
int age;
{
name = "mac";
if(age>0&&age<120){
age =10;
}
}
public void eat(){
print("I'm"+name+" can eat ");
}
}
注意事项
1.内部匿名类只能调用一次
2.内部匿名类必须继承一个类或接口,但也只能二选一
3.内部匿名类没有构造器
4.内部匿名类中不能有静态变量和静态方法
5.内部匿名类不能是抽象的,它必须实现它的父类方法或接口方法
转载于:https://my.oschina.net/u/3638962/blog/1575857
最后
以上就是认真蜡烛为你收集整理的如何在外部调用内部匿名类的全部内容,希望文章能够帮你解决如何在外部调用内部匿名类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复