`
chenjingbo
  • 浏览: 456558 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

很有趣的一个抽象类。

 
阅读更多

 

public abstract class Either<L, R> implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 0l;

	private Either() { }

	@SuppressWarnings("unchecked")
	public boolean  isLeft() {
		return (this instanceof Left);
	}

	@SuppressWarnings("unchecked")
	public boolean isRight() {
		return (this instanceof Right);
	}

	public abstract L _left();
	public abstract R _right();

	public static <L, R> Either<L, R> right(final R r) {
		return new Right<L, R>(r);
	}

	public static <L, R> Either<L, R> left(final L l) {
		return new Left<L, R>(l);
	}

	private static final class Left<L, R> extends Either<L, R> implements Serializable{
		/**
		 * 
		 */
		private static final long serialVersionUID = 7066970081776250327L;
		private final L l;

		Left(final L l) {
			this.l = l;
		}

		@Override
		public L _left() {
			return l;
		}

		@Override
		public R _right() {
			return null;
		}

	}

	private static final class Right<L, R> extends Either<L, R> implements Serializable{
		/**
		 * 
		 */
		private static final long serialVersionUID = -894488879249418100L;
		private final R r;

		Right(final R r) {
			this.r = r;
		}

		@Override
		public L _left() {
			return null;
		}

		@Override
		public R _right() {
			return r;
		}

	}

}

 

 

要么 left,要么right,哈哈.不能继承的。。。。

分享到:
评论
1 楼 jilen 2013-03-08  
这种错误处理方式还是不太适合java

相关推荐

    多态性和继承(所有关于抽象类在C#中)

    在这一系列“跳水在面向对象编程”的这篇...抽象类起到多态性和继承一个不同的和非常有趣的角色。我们将讨论抽象类与我们的动手实验和理论作为解释什么输出我们得到的所有方面。我们也将列出下来点,记得在文章的结尾。

    ractive-isomorphic:从Ractive派生的同构抽象类Site和Page

    从Ractive派生的同构抽象类Site和Page 为什么? 我想要用于Web应用程序的全栈可重用代码库 同构 快速,轻松,有趣地构建和工作 它是什么? ri是两个类Site和Page ,可以将其扩展以快速轻松地创建出色的Web应用...

    抽象代数 [王颖,南基洙 编著] 2013年版

    《高等学校教材:抽象代数》可作为高等学校数学类专业本科高年级学生及研究生的教材,也可作为相关技术人员的参考用书。 目录 第一章 预备知识 第1节 集合与映射 第2节 置换集合S 第3节 等价关系与分类 第4节 代数...

    ConjuGator_Engine:用于动词变位和名词变格算法的灵活抽象引擎

    Verb_Infinitive 是一个抽象类,负责分析不定式形式的输入动词的字符串并确定其所有共轭特征,例如不规则性、“模式转换”和“附件”。 在此上下文中的不规则动词仅是在其共轭模式中异常的单数动词。 如果存在模式...

    Java语言程序设计-基础篇+进阶篇+英文原著-原书第10版(含课后习题答案和书中代码示例)

    JavaFX是一个用于开发JaVaGUI程序的新框架,它极大 地简化了 GUI 程序设计,比 Swing 更易于学习。 • 在GUI程序设计之前介绍异常处理、抽象类和接口,若教师选择不教授GUI的内 容,可以直接跳过第14丨6章。 • 在第...

    贪食蛇游戏是一个非常有趣的小项目,可以帮助你学习 Python 编程语言以及游戏开发的基本原理

    在 Python 中,你可以使用 Pygame、Tkinter 等库来实现贪食蛇游戏。通常,你需要实现蛇的移动、食物的...可以利用 Python 的面向对象编程思想来组织代码,将蛇、食物等对象抽象成类,并在游戏循环中进行更新和渲染。

    Hokum:Hokum 是一个旨在促进应用程序开发的框架。-开源

    Hokum 是一个简单而轻量级的框架,... Hokum 框架公开了几个接口和抽象类,允许您在影响很小的情况下更改组件的实现类型。 Hokum 框架旨在与市场上使用的许多框架一起使用,目的是使开发过程更容易、更快、甚至更有趣。

    shoemaker:创建Web组件的一种优雅方法

    Shoemaker提供了一个抽象类,您可以对其进行扩展,以使用优雅的API和React性数据绑定来制作自己的。 与许多其他自定义元素创作工具相比,它为您提供了更接近金属的体验。 声明性模板 通过道具进行React式数据绑定 ...

    C#开发的单机版中国象棋游戏

    游戏采用Winform窗体界面,提供了人机对战模式,旨在为用户提供一个有趣的中国象棋游戏体验。 功能特点 游戏界面:采用Winform窗体界面,简洁美观,用户友好。 游戏模式:支持人机对战模式。 棋盘操作:支持鼠标...

    基于强化学习训练德州扑克的agent源码+项目说明.zip

    【资源说明】 ...而且实际跑起来这样就是无效的,因为这样生成的训练数据就是随机,唯一的信息是env给出的最终的结果的反馈,而整个状态空间又太大了,网络很容易在一个随机的初始值上就过拟合了。 .......

    初级java笔试题-oopnotes:面向对象编程笔记本,设计原则和模式参考指南

    初级java笔试题面向对象的笔记本 我已将此笔记本作为面向对象编程概念和设计模式的..._抽象类的主要目的是为其子类定义一个公共接口。 它将在其子类中定义的操作中委托其部分或全部实现,因此无法创建抽象类的实例。

    使用机器学习分析 Java 程序的语法结构

    结果揭示了有趣的信息,例如很少(和广泛使用)使用的Java结构(例如,按位运算符,联合类型和静态块),初学者(和专家)主要(几乎)使用的不同语言功能和模式,发现特定类型的源代码(例如,帮助程序或实用程序类...

    超爽的自学课件(java)

    1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...

    Mouse Run:编程游戏,一种构建智能事物的实践工具-开源

    程序员只需要实现一个代码文件,即可从包含单个鼠标逻辑的抽象类扩展而来。 游戏主机将收集所有鼠标实现,并使它们在迷宫中运行。 对于像我们这样的极客/书呆子/(或任何喜欢称呼自己的人)来说,这确实很有趣。 ...

    外文翻译 stus MVC

    1:外文原文 Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology....

    JavaScript王者归来part.1 总数2

     7.3.1 构造函数--一个双精度浮点数封装类的例子   7.3.2 缺省构造和拷贝构造   7.3.3 对象常量   7.4 对象的销毁和存储单元的回收   7.5 JavaScript的内置对象   7.5.1 Math对象   7.5.2 Date对象--...

    seq2seq_Pointer_Generator_Summarizer:用于抽象深度总结的深度学习神经网络

    一个用于深度抽象摘要项目的深度学习神经网络:这是一个从中文对话中生成摘要总结的项目。有趣的对话是客户和汽车技术人员之间的对话,其中有80000多个样本用于培训和测试,还有20000样本用于预测。数据基准线在某种...

    干货:腾讯内部价值千万的24张产品策略PPT

    Don’tmakemethink(不要让我思考),这是产品经理做界面设计的时候一个思考方向。做简单的秘诀是“抽象分类”,即找出各个功能的共性、寻找用户的认知G点、感受用户的文化水平。产品经理的自我修养三秘诀是“我就是我...

    xpilot.io:一个简单的类似xpilot的游戏,可在浏览器中运行,用Elm编写

    xpilot.io 一个简单的类似xpilot的游戏,运行在浏览器中,用Elm编写。 您可以在播放它尝试在Elm中制作这款游戏​​很有趣,但是我绝对认为使用其他编程语言将是更好的选择。 我试图制作一些抽象层,以后可以在其他...

Global site tag (gtag.js) - Google Analytics