「java匿名类风险」java匿名类和匿名内部类
今天给各位分享java匿名类风险的知识,其中也会对java匿名类和匿名内部类进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
JAVA匿名类问题
这个问题其实跟匿名类是没有关系的,这个是多态里面的一个问题。子类可以扩展父类,可以定义自己的方法。对于外界来说也是可见的,但是如果你采用的是多态的办法来调用子类那么你的子类中的定义的方法对于外界来说就是不可见的了。只能调用父类中定义过的方法,这样就可以保证安全性。
因为 可能一个类有多个类来继承,每个类都可以定义自己的方法,但是如果可以在父类的对象上边调用子类自己的方法就会存在隐患。比如
public interface A{
public void a();
}
public class B extends A{
public void b(){...}
}
public class C extends A{
public void c(){...}
}
你可以使用A a=new B();
来调用B中方法,但是只能调用 a.a(),而不能调用 a.b();如果说A的对象A可以调用 a.b()的话,那么,如果我把A的实现换成了C那么a.b()就会出现错误,没有这个方法。所以为了保证安全性,父类的对象只能调用父类中定义过的方法。
如果你用过Spring的话,那么就能有比较深的理解。Spring中式可以通过配置来实现多态的,如果java中是可以使用a.b()这样的话,那么你改了Spring中的子类的配置还要去更改代码,那么实际上Spring也就没有多大用处、多态也就没有什么优势了~
不知道你懂了没有~~
java 匿名类的优点和缺点?
优点就是其状态不会被外界干扰,在多线程环境中更有优势
缺点就是语法不是很清晰,有点乱
java中为什么要引入匿名类
有的时候, 为可实现一个功能或者实例化一个对象, 需要实现一个接口, 但是接口应用的地方很多, 但是每个地方的实现都不尽相同, 而且需要实例化的地方就只只有那么一两处, 这个时候, 如果为了这些地方, 每个声明一个类来实现接口的话, 就会浪费很多空间, 还得费时编译, 匿名内部类可以在需要的地方使用接口, 可以在使用的同时实现, 这样不但节省了空间, 还可以使代码更加明了
一般的应用都是在Java界面编程上, Applet, Awt, Swing, SWT, 因为在注册事件侦听的时候, 就有上面的情况, 因为每个组件动作的处理都不一样, 而且注册事件只有一次, 用匿名类就比较方便了. 还有比较器, 用Collections.sort比较对象集合的时候, 直接实例化sort方法的第二个参数, 比较方便.
java中的匿名类是怎么回事
匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。 这就要采用另一种形式的new语句,如下所示: new 类或接口 类的主体 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体
实在不理解从网上搜索下吧,很多相关介绍和实例,。匿名类,匿名内部类。
关于Java匿名内部类线程安全问题?
不需要在主类中设置锁,匿名内部类是在调用的时候只执行一次,但匿名内部类要访问类当中的数据,该数据必须为final。
JAVA的匿名类详细介绍
匿名类顾名思义就是没有名字的类。
interface hello{
String start();
}
public class ok{
public String hello(){
return new hello(){ //这个个地方就是匿名类
String start(){ return "hello world"; }
}
}
}
关于java匿名类风险和java匿名类和匿名内部类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。