Tag: 接口

事后实现接口

我认为,以下不能用Java完成。 但我很乐意学习如何实现类似于它的东西。 假设我们有一个C类,它已经在编译代码中使用了。 (我们既不能改变代码也不能改变C的原始定义)。 进一步假设有一些有趣的代码可以重复使用,如果只有C实现接口I.实际上,或许不那么简单,派生D只是C +接口方法的实现。 然而,一旦我有一个C,似乎没有办法说:我希望你成为一个D,也就是说,一个C实现我。 (旁注:我认为如果D是C,那么应该允许c的运行时类型为C的强制转换(D)c,并且C的唯一区别是添加方法。这应该是安全的,如果不是吗?) 怎么能解决这场灾难呢? (我知道工厂设计模式,但这似乎不是一个解决方案。因为,一旦我们设法在以前是C的所有地方创建D,其他人发现另一个接口J有用并导出E扩展C实现J.但是E和D是不兼容的,因为它们都为C添加了一组不同的方法。所以虽然我们总是可以传递一个预期C的E,但是我们不能通过一个预期D的E.而是,现在,我们需要一个新类F扩展C实现I,J。)

为什么界面方法没有正文

要实现多重inheritance,我们必须使用接口,但为什么接口方法没有实体,为什么必须在派生类中重写它们? 我真的想要一个清晰的答案,不涉及太多的计算机术语,我似乎无法理解这一点,我已经提到了各种参考

在java中使用接口中的实现类型

我想创建一个接口,强制实现它的每个类具有某个function,用于实现的类的类型。 所以说我有类MyClassA,MyClassB,MyClassC等,它们都需要一个自己类型的函数: 在MyClassA中: public class MyClassA implements MyClass { MyClassA function(MyClassA x) { doSomethingImplementedInMyClassA(x); } } 在MyClassB中: public class MyClassB implements MyClass { MyClassB function(MyClassB x) { doSomethingImplementedInMyClassB(x); } } 问题是,如何编写MyClass接口来要求这样的function? public interface MyClass { MyClass function(MyClass x); } 显然不起作用,因为返回类型是MyClass而不是它的实现。 如何在Java中正确地做到这一点?

JAXB – 生成的类实现接口

有没有办法配置JAXB ,以便生成的类实现指定的接口? 我打算使用JAXB生成的类作为DAO,他们应该能够实现我的DAO接口。

如何实现有效的Java特性?

如果这是不合适的,请告诉我(特别是Programmers.SE或者某些东西对于这个问题会更好。) 好的。 所以我有很多’特征’,我目前正在表达为接口。 我们称之为“可更新”和“可破坏”。 将它们表示为接口有一个缺点,我无法在所有“可破坏”组件之间共享行为; 另一方面,将这些表示为抽象类意味着我不能混合和匹配而不将混合特征明确定义为另一个抽象类(“UpdateableAndDestructible”),而且这感觉就像滥用抽象类function一样。 但是,如果没有更清晰的方法来解决这个问题,我可能最终会这样做。 对于这个难题,纯Java解决方案有哪些选择? 我是否有可能描述共享行为,然后按照我认为合适的方式进行混合和匹配,而不必明确描述我将要使用的每个排列?

如何参数化可比接口?

我有一个主类 – 模拟器 – 使用另外两个类 – Producer和Evaluator 。 生产者生成结果,而评估者评估这些结果。 模拟器通过查询生产者然后将结果传送给评估者来控制执行流程。 Producer和Evaluator的实际实现在运行时是已知的,在编译时我只知道它们的接口。 下面我粘贴接口,示例实现和Simulator类的内容。 旧代码 package com.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; /** * Producers produce results. I do not care what is their type, but the values * in the map have to be comparable amongst themselves. */ interface IProducer { […]

实现相同接口的枚举上的Java切换

我有一个小组项目,我们被迫使用提供的接口和枚举。 想象一下如下情况: // marker interface interface Request{} // marker interface interface Response{} enum TypeAction implements Request{ TYPE1, TYPE2, TYPE3 } enum OtherTypeAction implements Request{ OTHERTYPE1, OTHERTYPE2 } 在另一个类中,我有一个请求列表,如下所示: List req = new LinkedList()我想做的是:做一个如下所示的开关: switch(a_request){ CASE TYPE1: …. CASE TYPE2: …. CASE TYPE3: …. CASE TYPE2: …. CASE OTHERTYPE1: …. CASE OTHERTYPE2: …. } 我怎么能设法做到这一点? 重要说明:我无法在接口和枚举中添加方法,但我可以创建实现上面可以看到的接口的新枚举。 […]

Erasure类型的丑陋头脑,如何规避?

所以我有这个界面 public interface EventHandler { public void handleEvent(E event); } 我想为它处理处理事件的类,如下所示: public class WorkingHandler implements EventHandler { public void handleEvent(MouseEvent event) { //handle event } } 以上示例工作正常。 但是编译器不会让我多次实现EventHandler,因为类型擦除非常令人沮丧。 public class NotWorkingHandler implements EventHandler, EventHandler { public void handleEvent(MouseEvent event) { //handle mouse event } public void handleEvent(KeyEvent event) { //handle key event } } 几个问题…… […]

理解java中的’TypeElement’和’DeclaredType’接口

这两个接口的一个用途,就是编写注释处理器。 作为一个java初学者,我找到了这两个包添加的间接层: javax.lang.model.element和javax.lang.model.type以提供有关java interface和java class混淆的元数据。 ……… java doc评论说, TypeElement表示class或interface程序元素。 提供对类型及其成员的信息的访问。 请注意, enum类型是一种类,注释类型是一种interface 。 DeclaredType表示声明的类型,类型类型或interface类型。 这包括参数化类型,例如java.util.Set以及原始类型。 两者的区别: TypeElement表示class或interface 元素 ,而DeclaredType表示class或interface 类型 ,后者是前者的使用(或调用 )。 如何区分行话元素与类型 ? 例如: class 元素与class 类型有何不同? 请帮我举个例子。

实现接口的类列表

有没有办法实现类似的东西 List<Class> ClassList = new ArrayList<Class>(); 我的目标是从该列表创建一个hashmap,其中键是类的toString方法(在MyInterface中定义),值是类本身。 此类的每个对象的toString方法返回相同的结果。 这样我就可以通过搜索正确的字符串来使用地图创建类的实例。 谢谢你试图帮助,问候