C#的委托与Java的自定义接口的异曲同工的同步操作
C#的委托(以WinForm为例)
在子窗体(ChildFrm)中定义一个委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
/// <summary>
/// 子窗体:在子窗体中定义一个委托,供调用都设置侦听,并可与此窗体的某个事件同时执行自身指定的事件
/// 定义 委托
/// </summary>
public partial class ChildFrm : Form
{
public ChildFrm()
{
InitializeComponent();
} /// <summary>
/// 定义委托(同Java中的接口)
/// </summary>
/// <param name="callback">可以是任意类型</param>
public delegate void CaptureListenEvent(string callback); /// <summary>
/// 声明委托
///from:博客园-曹永思http://www.cnblogs.com/yonsy/p/3631116.html
/// </summary>
public CaptureListenEvent CaptureListener = null; /// <summary>
/// 调用者设置侦听
/// </summary>
/// <param name="CaptureListener"></param>
public void SetCaptureListener(CaptureListenEvent CaptureListener)
{
this.CaptureListener = CaptureListener;
} /// <summary>
/// 被侦听的窗体执行一个事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
WiteContent();//
}
/// <summary>
/// 写入值
/// </summary>
public void WiteContent()
{
string callback = richTextBox1.Text; //触发被侦听的委托
this.CaptureListener(callback);//子窗体触发委托事件,以告诉调用的窗体
//this.CaptureListener.Invoke(callback);//子窗体触发委托事件,以告诉调用的窗体
} }
Code By 博客园-曹永思
在主窗体(MainFrm)设置对子窗体委托的侦听
//设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
/// <summary>
/// 主窗体
/// 调用个关联子窗体
/// 设置子窗体中的侦听
/// </summary>
public partial class MainFrm : Form
{
//子窗体
ChildFrm frm = new ChildFrm(); public MainFrm()
{
InitializeComponent(); //设置侦听,监视子窗体的指定委托,并指定委托子窗体的执行的方法
frm.SetCaptureListener(new ChildFrm.CaptureListenEvent(CaptureInfo));
} private void button1_Click(object sender, EventArgs e)
{
//打开子窗体
frm.Show();
} /// <summary>
/// 子窗体触发委托事件时,主窗体同时会执行的方法
///code by:博客园-曹永思
/// </summary>
/// <param name="callback"></param>
public void CaptureInfo(string callback)
{
richTextBox1.Text = richTextBox1.Text + callback + "\n";
}
}
=====================================================================
Java的自定义接口
定义接口的类(HuangLiMonthActivity):
//定义接口的类: /*
* 声明一个接口
*/
public static YueLiClickListener yueLiClickListener; /*
* 设置接口侦听
*/
public static void setYueLiClickListener(YueLiClickListener clickListener) {
yueLiClickListener = clickListener;
} //在某个方法中绑定侦听
//绑定触发的事件-调用都实现这个方法以处理自身的逻辑
yueLiClickListener.OnClick(iyear, imonth, iday);
调用接口的类(HuangLiMonthPanelActivity):
//实现接口绑定的侦听事件
YueLiClickListener clickListener = new YueLiClickListener() { @Override
public void OnClick(int year, int month, int day) {
// TODO Auto-generated method stub
getRiLiData(year, month, day);
mYear = year;
mMonth = month;
mDay = day;
}
}; //设置接口侦听
HuangLiMonthActivity.setYueLiClickListener(clickListener);
C#的委托与Java的自定义接口的异曲同工的同步操作的更多相关文章
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
- Java中 Comparator接口 与Comparable 的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt159 comparator接口与Comparable接口的区别 1. Com ...
- 使用Java代码自定义Ribbon配置
很多场景下,需要实现不同的微服务采用不同的策略,例如修改Ribbon的负载均衡规则等.Spring Cloud允许使用Java代码自定义Ribbon的配置. 在Spring Cloud中,Ribbon ...
- java中自定义注释@interface的用法
一.什么是注释 说起注释,得先提一提什么是元数据(metadata).所谓元数据就是数据的数据.也就是说,元数据是描述数据的.就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义.而J ...
- JNI的又一替代者—使用JNR访问Java外部函数接口(jnr-ffi)
1. JNR简单介绍 继上文“JNI的替代者—使用JNA访问Java外部函数接口”,我们知道JNI越来越不受欢迎,JNI是编写Java本地方法以及将Java虚拟机嵌入本地应用程序的标准编程接口.它管理 ...
- java注解自定义使用
Java提供了4种注解,专门负责新注解的创建: @Target: 表示该注解可以用于什么地方,可能的ElementType参数有:CONSTRUCTOR:构造器的声明FIELD:域声明(包括enum实 ...
- spring data 自定义接口
1 spring data jpa 虽然说spring data 提供了很多DAO 接口,但是依然可能不能满足我们日常的使用,所以,有时我们需要自定义接口方法.自定义接口方法步骤如下: 1. 创建自 ...
- Java 线程--实现java.lang.Runnable接口实现线程
Java线程的第一种实现方式,主要分两步,第一步是继承java.lang.Thread; 第二步是重写run()方法.接下来我们来看Java线程的第二种实现方式,也是分为两步,第一步,写一个类实现ja ...
- java集合类型接口和实现类个人总结
转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
随机推荐
- 使用swoole编写简单的echo服务器
server.php代码如下: <?php class EchoServer { protected $serv = null; public function __construct() { ...
- c#异步等待
1:一直等待 2方法 现实等待 3:方法 带返回值得 begin -endinvoke 4: func 带返回值
- 11.Mysql视图
11.视图11.1 什么是视图 视图view是一张虚拟表,它不存储数据,数据仍在表里,视图由一条查询表的select语句创建,视图只存储select语句. 可以将复杂的查询语句封装成视图,用户可以从视 ...
- uva 103(最长递增子序列) Stacking Boxes
大意是有一些n维的物体,他的边也是n条,如果将一个物体的边按任意顺序排列,只要有一种排列满足一一对应小于另一物体的边,就可以将这个物体嵌套进去另一个物体中,文最多能连续嵌套几个物体. 所求的最多的连续 ...
- linux系统中的进程状态分析
转载地址:https://blog.csdn.net/shenwansangz/article/details/51981459 linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序, ...
- Next generation sequencing (NGS)二代测序数据预处理与分析
二代测序原理: 1.DNA待测文库构建. 超声波把DNA打断成小片段,一般200--500bp,两端加上不同的接头2.Flowcell.一个flowcell,8个channel,很多接头3.桥式PCR ...
- String、StringBuffer、StringBuilder和StringTokenizer的区别
1)String.StringBuffer.StringBuilder都用于字符串操作,其中,String是不可变类,即String对象一旦被创建,其值不能被修改,而StringBuffer和Stri ...
- Java中多线程访问冲突的解决方式
当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失.因此需要采用同步机制来解决这种问题. 第一种 同步方法 第二种 同步代 ...
- java 银联接口开发
http://blog.sina.com.cn/s/blog_6c868c470100ys59.html 在线接口文档:http://wenku.baidu.com/link?url=EUgAuOKz ...
- sqli-labs:11-16,post注入
sqli11: post:uname=xx' order by 2#&passwd=bla&submit=Submit(判定字段为2) 解释下为什么结果不是admin,这是sql执行的 ...