java oop_java_oop_关键字

空白符

注释

标识符

分隔符

操作符

字面量

关键字

instanceof

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法:

result = object instanceof class

参数:

Result:布尔类型。

Object:必选项。任意对象表达式。

Class:必选项。任意已定义的对象类。

说明:

如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

但是instanceof在Java的编译状态和运行状态是有区别的:

在编译状态中,class可以是object对象的父类,自身类,子类。在这三种情况下Java编译时不会报错。

在运行转态中,class可以是object对象的父类,自身类,不能是子类。在前两种情况下result的结果为true,最后一种为false。但是class为子类时编译不会报错。运行结果为false。

接口Personpublic interfacePerson {public voideat();

}

实现类Peoplepublic class People implementsPerson {private int a=0;

@Overridepublic voideat() {

System.out.println("======"+a);

}

}

子类xiaoming:public class xiaoming extendsPeople {privateString name;

@Overridepublic voideat() {

System.out.println("+++++++++");

}

}

主函数public static voidmain(String[] args) {

People p=newPeople();

xiaoming x=newxiaoming();

System.out.println(pinstanceofPerson);

System.out.println(pinstanceof xiaoming); -----2System.out.println(xinstanceofPerson);

System.out.println(xinstanceofPeople);

}

注意:上面2处的代码在编译时不会报错。

运行结果:true

false

true

true

只要有jdk,文本编辑器,就可以实现代码

以下是在win10下的命令行中实现的效果

http://haolloyin.blog.51cto.com/1177454/332426/

IService接口:

importjava.rmi.Remote;importjava.rmi.RemoteException;public interface IService extendsRemote {//声明服务器端必须提供的服务

String service(String content) throwsRemoteException;

}

ServiceImpl实现类:

importjava.rmi.RemoteException;//UnicastRemoteObject用于导出的远程对象和获得与该远程对象通信的存根。

importjava.rmi.server.UnicastRemoteObject;public class ServiceImpl extends UnicastRemoteObject implementsIService {privateString name;public ServiceImpl(String name) throwsRemoteException {this.name =name;

}

@OverridepublicString service(String content) {return "server >> " +content;

}

}

Server类:

/** Context接口表示一个命名上下文,它由一组名称到对象的绑定组成。

* 它包含检查和更新这些绑定的一些方法。*/

importjavax.naming.Context;/** InitialContext类是执行命名操作的初始上下文。

* 该初始上下文实现 Context 接口并提供解析名称的起始点。*/

importjavax.naming.InitialContext;public classServer {public static voidmain(String[] args) {try{//实例化实现了IService接口的远程服务ServiceImpl对象

IService service02 = new ServiceImpl("service02");//初始化命名空间

Context namingContext = newInitialContext();//将名称绑定到对象,即向命名空间注册已经实例化的远程服务对象

namingContext.rebind("rmi://localhost/service02", service02);

}catch(Exception e) {

e.printStackTrace();

}

System.out.println("服务器向命名表注册了1个远程服务对象!");

}

}

Client类:

importjavax.naming.Context;importjavax.naming.InitialContext;public classClient {public static voidmain(String[] args) {

String url= "rmi://localhost/";try{

Context namingContext= newInitialContext();//检索指定的对象。 即找到服务器端相对应的服务对象存根

IService service02 =(IService) namingContext.lookup(url+ "service02");

Class stubClass=service02.getClass();

System.out.println(service02+ " 是 " +stubClass.getName()+ " 的实例!");//获得本底存根已实现的接口类型

Class[] interfaces =stubClass.getInterfaces();for(Class c : interfaces) {

System.out.println("存根类实现了 " + c.getName() + " 接口!");

}

System.out.println(service02.service("你好!"));

}catch(Exception e) {

e.printStackTrace();

}

}

}

javac Server.java

javac Client.java

start是win cmd命令,rmiregistry是jdk命令

start rmiregistry

start java Server

java Client

D:\code\testjava>java Client

Proxy[IService,RemoteObjectInvocationHandler

[UnicastRef

[liveRef:

[endpoint:[192.168.30.219:63188](remote),

objID:[-73e8973b:15e82f8d067:-7fff, 7236802699799293841]]]]]

是 com.sun.proxy.$Proxy0 的实例!

存根类实现了 java.rmi.Remote 接口!

存根类实现了 IService 接口!

server >> 你好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值