Java面试题(7)

35.什么是反射

反射就是在程序运行期间动态的获取对象的属性和方法的功能叫做反射。它能够在程序运行期间,对于 任意一个类,都能知道它所有的方法和属性,对于任意一个对象,都能知道他的属性和方法。

获取 Class对象的三种方式:

getClass();

xx.class;

Class.forName("xxx");

反射的优缺点:

优点:运行期间能 够动态的获取类,提高代码的灵活性。

缺点:性能比直接的Java代码要慢很多。 应用场景:spring的 xml配置模式,以及动态代理模式都用到了反射。 (1)java的反射机制 在java运行时环境中,对于任意一个类,都能知道这个类有哪些属性和方法;对于任意一个对象,能否 调用他的任意方法。这种动态获取信息以及调用对象方法的功能称为java语言的反射机制。 java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法。

36.什么是java序列化

简单来说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以将保存的 对象状态再读出来。虽然你可以用自己的各种各样的方法来保存,但是java提供了一种比较优质的保存 对象状态的机制,就是序列化。

(1)什么情况下需要序列化

1. 当需要把内存中的对象状态保存到一个文件中或者数据库的时候

2. 当需要用套接字再网络上传送对象的时候

3. 当需要通过RMI传输对象的时候

(2)什么是套接字(Socket)

socket可以看作是两个程序进行通讯连接中的一个端点,一个程序将一段信息写入socket,该socket就 会将这段信息发送给另外一个socket中,使这段信息能传送到其他程序中。

(3)什么是RMI

RMI模型是一种分布式对象应用,使用RMI技术可以使一个JVM中的对象,调用另一个JVM中的对象方法 并获取调用结果。另一个JVM可以在同一计算机也可以是远程计算机。因此,RMI意味着需要一个 Server端和Client端。

37.动态代理是什么

动态代理:当想要给实现了某个接口的类中的方法增加一些额外的处理。

比如说加日志、事务等。可以 给这个类创建一个代理,顾名思义就是创建一个新的类,这个类不仅包含原来类方法的功能,还在原基 础上增加了额外处理的新类。这个代理类并不是定义好的,而是动态生成的。具有解耦意义,灵活,扩 展性强。

(1)动态代理的应用 Spring的AOP、事务、权限、日志

(2)怎么实现动态代理

1. 首先必须定义一个接口,还要有一个 InvocationHandler(将实现接口的类的对象传递给它)处理 类。

2. 再有一个工具类 Proxy,通过getProxyClass静态方法生成一个动态代理类。

3. 获得代理类中的一个带InvocationHandler参数的构造器

4. 通过这个构造器来创建一个动态类的实例,最后返回。

(3)代理模式

代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类 预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。

代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象 本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。

简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引 入一定程度的间接性,因为这种间接性,可以附加多种用途

你可能感兴趣的:(java,java,开发语言)