使用Eclipse中提供的Refactor(重构)工具提取接口

简介: 最近用到网络编程方面的知识,在网上看到帖子 Java Nio的Socket服务端编写 ,想跑一下提供的代码,但是在 Eclipse 中创建了对应的类,把代码粘贴进去却发现少了一个接口 TCPProtocol 的定义。

最近用到网络编程方面的知识,在网上看到帖子 Java Nio的Socket服务端编写 ,想跑一下提供的代码,但是在 Eclipse 中创建了对应的类,把代码粘贴进去却发现少了一个接口 TCPProtocol 的定义。

代码如下:

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.util.Date;

public class TCPProtocolImpl implements TCPProtocol {
	private int bufferSize;

	public TCPProtocolImpl(int bufferSize) {
		this.bufferSize = bufferSize;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.weixiao.network.TCPProtocol#handleAccept(java.nio.channels.
	 * SelectionKey)
	 */
	@Override
	public void handleAccept(SelectionKey key) throws IOException {
		SocketChannel clientChannel = ((ServerSocketChannel) key.channel()).accept();
		clientChannel.configureBlocking(false);
		clientChannel.register(key.selector(), SelectionKey.OP_READ, ByteBuffer.allocate(bufferSize));
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.weixiao.network.TCPProtocol#handleRead(java.nio.channels.
	 * SelectionKey)
	 */
	@Override
	public void handleRead(SelectionKey key) throws IOException {
		// 获得与客户端通信的信道
		SocketChannel clientChannel = (SocketChannel) key.channel();

		// 得到并清空缓冲区
		ByteBuffer buffer = (ByteBuffer) key.attachment();
		buffer.clear();

		// 读取信息获得读取的字节数
		long bytesRead = clientChannel.read(buffer);

		if (bytesRead == -1) {
			// 没有读取到内容的情况
			clientChannel.close();
		} else {
			// 将缓冲区准备为数据传出状态
			buffer.flip();

			// 将字节转化为为UTF-16的字符串
			String receivedString = Charset.forName("UTF-16").newDecoder().decode(buffer).toString();

			// 控制台打印出来
			System.out.println("接收到来自" + clientChannel.socket().getRemoteSocketAddress() + "的信息:" + receivedString);

			// 准备发送的文本
			String sendString = "你好,客户端. @" + new Date().toString() + ",已经收到你的信息" + receivedString;
			buffer = ByteBuffer.wrap(sendString.getBytes("UTF-16"));
			clientChannel.write(buffer);

			// 设置为下一次读取或是写入做准备
			key.interestOps(SelectionKey.OP_READ | SelectionKey.OP_WRITE);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.weixiao.network.TCPProtocol#handleWrite(java.nio.channels.
	 * SelectionKey)
	 */
	@Override
	public void handleWrite(SelectionKey key) throws IOException {
		// do nothing
	}
}
怎么办呢?

我们可以使用Eclipse中提供的Refactor(重构)工具提取接口,操作方法如下图:

单击鼠标右键》Refactor(重构)》Extract Interface(提取接口)


就会自动生成接口文件,代码如下:

import java.io.IOException;
import java.nio.channels.SelectionKey;

public interface TCPProtocol {

	void handleAccept(SelectionKey key) throws IOException;

	void handleRead(SelectionKey key) throws IOException;

	void handleWrite(SelectionKey key) throws IOException;

}
会用这个功能了, Refactor(重构)菜单的其它几个功能是不是也一并 Get 了呢?


目录
相关文章
|
6月前
|
Android开发
Eclipse工具使用技巧
Eclipse工具使用技巧
|
IDE 大数据 Java
大数据基本开发工具的IDE工具的Eclipse
在大数据开发过程中,IDE工具是必不可少的。Eclipse是一种广泛使用的Java IDE工具,它支持多种编程语言和各种插件,非常适合大数据开发。本文将介绍Eclipse的特点、安装和使用方法。
149 0
|
Java Android开发
JAVA汉化教程 自带eclipse即可无需外部工具
JAVA汉化教程—无需工具软件 自带eclipse即可
JAVA汉化教程 自带eclipse即可无需外部工具
|
Java Linux Android开发
【工具使用】eclipse来回切换项目的JDK版本的方法(最全的)
我们用eclipse在做项目的时候会切换jdk版本,本地运行的项目所使用的jdk版本比Linux服务器高(低),需要调低(高)JDK版本。那么如何通过eclipse配置来切换呢?
1601 0
【工具使用】eclipse来回切换项目的JDK版本的方法(最全的)
|
设计模式 安全 Java
Android事件通知工具:RxBus在Eclipse和AS中的实践
Android事件通知工具:RxBus在Eclipse和AS中的实践
243 0
Android事件通知工具:RxBus在Eclipse和AS中的实践
|
搜索推荐 Java 数据库连接
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
339 0
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
|
NoSQL 开发工具 Android开发
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
312 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(三)
|
Go 开发工具 Android开发
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
200 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(二)
|
Ubuntu Linux 编译器
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)
285 0
【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)(一)
|
Android开发
win10 4k分屏 eclipse等工具打开后按钮图标大小问题解决方案
1、打开显示设置 2、打开eclipse属性、直接上图:
240 0
win10 4k分屏 eclipse等工具打开后按钮图标大小问题解决方案