首页 > 编程知识 正文

javastring匿名对象,java中的内部类和匿名内部类

时间:2023-05-04 05:18:37 阅读:62887 作者:3311

我们知道在Java中可以使用内部类。 内部类将一个类的定义放在另一个类的定义内部,但匿名内部类没有特定的名称,该如何使用呢?

定义匿名内部类

公共接口内容

{

int value (;

}

公共类测试1

{

隐私内容内容(

{

返回新内容(

{

私密int I=11;

@Override

公共int value () )

{

返回I;

}

(;

}

publicstaticvoidmain (字符串[ ] args ) )。

{

Test1 test=new Test1 (;

Contents con=test.contents (;

系统. out.println (con.value ) );

}

}

如上所述,我们定义了实现Contents接口的匿名内部类。 new表达式返回的引用将自动向上转换为对Contents的引用,输出结果为11。 这是最基本的匿名内部类,只是输出了结果。 接下来,让我们看看使用外部对象的匿名内部类。

使用带参数的匿名内部类

公共接口目标

{

字符串读取标签(;

}

公共类测试2

{

私有目标目标(finalstringdest )。

{

返回新目标(

{

私有字符串标签=dest;

@Override

公共字符串读取标签(

{

返回标签;

}

(;

}

publicstaticvoidmain (字符串[ ] args ) )。

{

Test2 test2=new Test2(;

目的地d=test2.目的地(Wuhan );

system.out.println(d.readlabel );

}

}

上面的匿名内部类传递使用外部定义对象的参数时,编译器要求该参数引用为final。 但是,在JDK1.8中,即使未设置为final,也没有报告错误。

初始化匿名内部类

公共接口目标

{

字符串读取标签(;

}

公共类测试3

{

公共目标目标(finalstringdest,final float price ) )。

{

返回新目标(

{

隐私成本;

{

cost=math.round(price;

If (成本100 ) )。

{

System.out.println;

}

}

私有字符串标签=dest;

@Override

公共字符串读取标签(

{

返回标签;

}

(;

}

publicstaticvoidmain (字符串[ ] args ) )。

{

Test3 test3=new Test3(;

destination D3=test3. destination (' Wuhan ',101.1F );

system.out.println (D3 .读取标签);

}

}

这样,在该匿名内部类中初始化了cost,但由于匿名内部类没有名称,所以初始化方法当然也没有名称。

使用匿名内部类后,如果使用工厂方法,该方法将变得非常简洁和易于使用。

最后,说明为什么需要内部类。 最吸引人的原因之一是,每个内部类都可以独立地继承一个(接口的)实现,从而不影响内部类,无论外围类是否已经继承了某个(接口的)实现。 如上所述,使用匿名内部类时,匿名内部类提供了直接接口,在某些情况下也提供了便利。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。