[Java]如何制作一个WordCount-Plus的Plugin
主类
每个Plugin都有一个主类实现了com.jihuayu.wordcount.api.Plugin接口,这个主类就是插件的路口。
获取命令介绍
可以通过向方法getCommandUsage的参数info添加String的方法添加你的方法介绍。
获取命令名字
可以通过方法getCommandName的返回值来指定命令名字。
- 若返回null则表示只进行初始化,不出现在指令区。
- 若返回“”代表无参数时执行该代码的。
设置命令执行代码
可以通过设置doCommand方法来设置执行时的代码,其中doCommand的参数为针对该指令传入的参数。
事件
WordCount-Plus默认自带了4个事件,分别是:
ReadyEvent
准备完成时触发。
ReadEvent
每次读取完成时触发。
ReadOverEvent
全部文本读取完成时触发。
WriteEvent
每次需要输出时触发。
自定义事件
当然,你也可以自定义事件。
示例
ReadyPlug
import com.jihuayu.wordcount.api.Plugin;
import com.jihuayu.wordcount.api.event.ReadyEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
public class ReadyPlug implements Plugin {
public ReadyPlug(){
EventBus.getDefault().register(this);
}
@Override
public void getCommandUsage(List<String> info) {
}
@Override
public String getCommandName() {
return null;
}
@Override
public void doCommand(String[] args) {
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(ReadyEvent event){
System.out.println("hello");
}
}
ReadPlug
import com.jihuayu.wordcount.api.Plugin;
import com.jihuayu.wordcount.api.event.ReadEvent;
import com.jihuayu.wordcount.api.event.ReadOverEvent;
import org.greenrobot.eventbus.EventBus;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
public class ReadPlug implements Plugin {
@Override
public void getCommandUsage(List<String> info) {
info.add("<file>:read from file");
}
@Override
public String getCommandName() {
return "r";
}
@Override
public void doCommand(String[]args) {
if(args.length>0){
String str = args[0];
FileReader fr= null;
try {
fr = new FileReader(str);
BufferedReader br=new BufferedReader(fr);
String line="";
while ((line=br.readLine())!=null) {
EventBus.getDefault().post(new ReadEvent(line));
}
EventBus.getDefault().post(new ReadOverEvent());
br.close();
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
[Java]如何制作一个WordCount-Plus的Plugin的更多相关文章
- java swing 制作一个登陆界面,亲测有效
一.介绍 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT ...
- Java编写ArrayBasic制作一个简单的酒店管理系统
听老师讲了一些ArrayBasic的一些知识,让制作一个酒店管理系统,要求:显示酒店所有房间列表,预订房间.... 经过老师的指导写了一个代码,如下: import java.util.Scanner ...
- 【数据结构与算法】Java制作一个简单数组类
bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...
- 编写Java程序,使用菜单组件制作一个记事本编辑器
返回本章节 返回作业目录 需求说明: 使用菜单组件制作一个记事本编辑器 实现思路: 创建记事本菜单工具栏JMenuBar. 创建多个菜单条JMenu. 创建多个菜单项JMenuItem. 将菜单添加至 ...
- 手把手制作一个简单的IDEA插件(环境搭建Demo篇)
新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...
- 制作一个centos+jdk8+tomcatd9镜像
docker解析: 1.登录docker docker ecex –it 容器名/容器id /bin/bash 例如: dock ...
- springboot2.x基础教程:动手制作一个starter包
上一篇博客介绍了springboot自动装配的原理.springboot本身有丰富的spring-boot-starter-xx集成组件,这一篇趁热打铁加深理解,我们利用springboot自动装配的 ...
- 制作一个简洁的jquery插件
原文:http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401571467&idx=1&sn=08cb00963e6ef ...
- 使用apache-cxf-2.2.10来制作一个极简版WebService程序
原想拿最新版cxf来制作的,无奈Apache的zip包总下不下来,国内的apache-cxf-2.2.10却一蹴而就,也就用了这个版本.下载地址是:http://pan.baidu.com/s/1td ...
随机推荐
- 马拉车算法,mannacher查找最长回文子串
作用: 在线性时间内找到一个字符串的最大回文子串 原理: 奇偶变换:为处理字符串方便,现将给定的任意字符串进行处理,使所有可能的奇数/偶数长度的回文子串都转换成了奇数长度. 具体就是在每个字符的两边都 ...
- 玩转Vuejs--数组监听
Vue中对数据的监听主要是依靠Object.defineProperty来实现的,这种实现主要是针对key/value形式的对象,对数组中值的变化是无能为力的,那么该如何对数组中的数据进行监听呢,下面 ...
- fastJson解析报错:com.alibaba.fastjson.JSONException: can't create non-static inner class instance.
原因: 如果出现类嵌套类的情况,需要将被嵌套的那个类设置为static. 比如: public class AA { // 相关属性 public class BB {//会报错 // 相关属性 } ...
- PHP多线程 curl_multi_init 的使用
php中可以通过CURL处理HTTP请求,其中curl_init()是单线程模式,如果需要对事务处理走多线程模式,那么就需要用到curl_multi_init()函数. 本案例用来测试大并发的情况下 ...
- [js]练习绘制拓扑图
- 136A
#include <stdio.h> #include <string.h> #define MAXSIZE 110 int main() { int giv[MAXSIZE] ...
- yum 运行失败
https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-not-found- ...
- 我对MVC的理解
1. MVC :M模型 V视图 C控制器 1.1 模型是用来处理业务逻辑的,里面由许多类构成 1.2 视图是用来显示界面的 1.3 控制器是一个中间人,它通过视图的提交方式(post, ...
- git使用手册整理
-------------------20181217------------------- git使用:在gitbash 下初始化用户: $ git config --global user.nam ...
- 与图论的邂逅03:Lengauer-Tarjan
回想一下,当我们在肝无向图连通性时,我们会遇到一个神奇的点——它叫割点.假设现在有一个无向图,它有一个割点,也就是说把割点删了之后图会分成两个联通块A,B.设点u∈A,v∈B,在原图中他们能够互相到达 ...