Tag: 多inheritance

如何在适配器中扩展多个类?

我想在列表中实现部分。 我有一份任务清单。 List有一个自定义适配器,它扩展了recyclerview刷卡适配器,因为我已经实现了向recyclelerview的滑动手势。 因此,现在任务列表与已完成和待处理任务一起显示。 每个列表项都有一个复选框,显示任务已完成或待处理。 如果选中复选框,则任务完成,反之亦然。 现在我想用标题创建两个部分。 一个用于已完成的任务,另一个用于待处理任 所以完成的任务应该显示在已完成的部分内,反之亦然。 此外,如果任务未经检查,即待处理,如果用户选中复选框,则该项目应从待处理部分中删除,并应添加到已完成的部分,反之亦然。 我检查了一个库的部分。 https://github.com/afollestad/sectioned-recyclerview 但是当我尝试实现库时,我得到了错误,即适配器无法扩展两个类,因为之前我已经扩展了recyclelerview swipe库。 扩展sectionedRecyclerview适配器后的onBindViewHolder方法我得到错误,因为IAdapter应该实现onBindViewHolder(VH,int) 怎么解决这个? 适配器: public class IAdapter extends RecyclerSwipeAdapter , SectionedRecyclerViewAdapter { public ArrayList items; Context conext; public int _mId; List itemsPendingRemoval = new ArrayList(); public IAdapter(Context context, ArrayList item) { this.conext=context; this.items=item; } @Override public int getSectionCount() { return 2; } […]

Java:一个类可以同时从两个超类inheritance吗?

我有一个课程旅程,我想创建一个超级课程和另一个课程计划之旅。 计划的旅程类扩展了JFrame,因为它包含表单。但是我也希望这个类扩展Journey .. 有可能这样做吗?

为什么带有共同祖先的钻石案例用于解释Java多重inheritance问题,而不是两个不相关的父类?

对于Java人来说,这个问题可能听起来很奇怪,但如果你试图解释这个问题,那就太好了。 在这些日子里,我正在清除Java的一些非常基本的概念。 所以我来谈谈Java的inheritance和接口主题。 在阅读本文时,我发现Java不支持多重inheritance,并且也明白,我无法理解为什么到处钻石图形问题(至少4个类创建钻石)被讨论来解释这种行为,我们不能仅使用3个类来理解此问题。 说,我有A类和B类,这两个类是不同的(它们不是普通类的子类)但是它们有一个共同的方法,它们看起来像: – class A { void add(int a, int b) { } } class B { void add(int a, int b) { } } 好的,现在说如果Java支持多重inheritance,并且如果有一个类是A和B的子类,如下所示: – class C extends A,B{ //If this was possible @Override void add(int a, int b) { // TODO Auto-generated method stub super.add(a, b); //Which version of […]

Java:你怎么称这种多重inheritance歧义?

这是在Java中使用多接口inheritance的示例,这是一个问题。 请注意,我完全知道为什么会出现问题,这不是我的问题。 问题是关于如何命名这个特定的多接口inheritance歧义,如果它有一个名称。 例如,在C ++中,当您使用多个实现inheritance并且无法确定使用哪个重写方法时出现的歧义称为“钻石问题”: http://en.wikipedia.org/wiki/Diamond_problem 再一次,我知道这不是同一个问题:那不是重点。 关键是在之前的案例中创造了一个名称。 而且我想知道我将要描述的问题是否存在名称。 下面是另一种多重inheritance的示例,其中一个接口inheritance自另外两个具有不兼容方法返回类型的接口: interface A { void a(); Integer c(); } interface B { void b(); Long c(); } interface MI extends A, B {…} (使用’extends’关键字注意工作中的多个接口inheritance) 你做不到,因为: A型和B型不兼容; 两者都定义c()但具有不相关的返回类型 有没有一个名字来描述这种情况?

如何在Java中实现与单应性方法的接口?

在英语中,同形异义词对是两个具有相同拼写但含义不同的单词。 在软件工程中,一对同形方法是两种具有相同名称但要求不同的方法。 让我们看一个人为的例子,让问题尽可能清晰: interface I1 { /** return 1 */ int f() } interface I2 { /** return 2*/ int f() } interface I12 extends I1, I2 {} 我该如何实施I12 ? C# 有办法做到这一点,但Java没有。 所以唯一的方法是破解。 怎样才能最可靠地完成reflection/字节码技巧/等等(即它不一定是一个完美的解决方案,我只想要一个效果最好的解决方案)? 请注意,我不能合法地逆向工程的一些现有的闭源大量遗留代码需要I12类型的参数,并将I12委托给具有I1作为参数的代码,以及将I2作为参数的代码。 所以基本上我需要创建一个I12的实例,知道它何时应该充当I1 ,何时它应该充当I2 ,我相信可以通过在直接调用者的运行时查看字节码来完成。 我们可以假设调用者没有使用reflection,因为这是简单的代码。 问题是I12的作者没想到Java会从两个接口合并f ,所以现在我必须想出最好的解决问题的方法。 没有什么能调用I12.f (显然如果作者写了一些实际上叫做I12.f代码,他会在出售之前注意到这个问题)。 请注意,我实际上是在寻找这个问题的答案,而不是如何重构我无法改变的代码。 我正在寻找最好的启发式方法,或者如果存在的话,可以找到精确的解决方案。 请参阅Gray的答案以获得有效示例(我确信有更强大的解决方案)。 这是一个具体的例子,说明两个接口内的单应方法问题是如何发生的。 这是另一个具体的例子: 我有以下6个简单的类/接口。 它类似于剧院周围的商业和在其中表演的艺术家。 为了简单起见,我们假设它们都是由不同的人创建的。 Set代表一个集合,如集合论: interface Set { […]

在Java 8中使用多重inheritance

我使用 Java 8的function还是滥用它? 请参阅下面的代码和说明,了解为什么选择这样的代码。 public interface Drawable { public void compileProgram(); public Program getProgram(); default public boolean isTessellated() { return false; } default public boolean isInstanced() { return false; } default public int getInstancesCount() { return 0; } public int getDataSize(); public FloatBuffer putData(final FloatBuffer dataBuffer); public int getDataMode(); public boolean isShadowReceiver(); public boolean isShadowCaster(); […]

抽象类和多重inheritance

我们可以通过使用抽象类来实现与接口相同的function,那么为什么java不允许以下代码呢? abstract class Animals { public abstract void run(); } abstract class Animals1 { public abstract void run1(); } class Dog extends Animals,Animals1 { public void run() {System.out.println(“Run method”);} public void run1() {System.out.println(“Run1 method”);} } 我知道只使用接口可以实现多重inheritance,但上面的代码与接口完成的工作完全相同。

即将发布的Java 8版本中的虚拟扩展方法

当我看到代码片段之类的时候 interface A { void a(); void b() default { System.out.println(“b”); }; void c() final { System.out.println(“c”); }; } 我有一个问题。 我们还没有得到足够的Java? 为什么人们可能需要这个?

如何创建一个“扩展”两个现有具体类的类

我非常清楚它可以在界面的帮助下完成,而且我已经多次完成了。 但这次我的情况有很大不同。 我有class A class B ,我需要创建另一个class C ,它扩展了A和B,因为C应该具有两个function,并且还注意A和B不是相互关联的,所以即使我不能说A可以扩展class B 。 我现在应该怎么做才很困惑。 我知道我们不能改变java …但至少会有一些方法可能。 即使是最近的也可以……请帮帮我。 添加更多细节: – Class B是标准API,而class A是需要由所有exception类inheritance的公共exception类。 相关问题: 为什么Java中没有多重inheritance,但允许实现多个接口? (虽然我上面的问题并不是为什么不允许这样做。)

Java中的输入和输出流管道

有没有人有任何关于在Java中创建Pipe对象的好建议,它既是InputStream又是OutputStream,因为Java没有多重inheritance,而且这两个流都是抽象类而不是接口? 基本需求是有一个对象可以传递给需要InputStream或OutputStream的东西来管道从一个线程输出到另一个线程的输入。