相关疑难解决方法(0)

Interface中的内部类

是否可以在界面中创建内部类?如果有可能我们为什么要创建这样的内部类,因为我们不打算创建任何接口对象?

这些内部类有助于任何开发过程吗?

java oop interface inner-classes

89
推荐指数
7
解决办法
7万
查看次数

Scala traits如何编译成Java字节码?

我已经玩了一段时间Scala了,我知道traits可以作为Scala等同于接口和抽象类.如何将特征编译成Java字节码?

我发现了一些简短的解释,说明特征在可能的情况下编译完全类似于Java接口,否则与其他类接口.但是,我仍然不明白Scala如何实现类线性化,这是Java中没有的功能.

是否有一个很好的来源解释traits如何编译为Java字节码?

scala bytecode

45
推荐指数
2
解决办法
5812
查看次数

多重继承的替代方案

经过20多年的Java编程,我希望自己有多重继承.但我并非如此,我正在为这个具体问题寻找替代方案.

真正的应用程序是某种ERP,有点复杂,所以我试图将这个问题转化为汽车.这只是到目前为止,但这是我能做的最好的.

让我们从描述汽车可以做什么的界面开始:

public interface Car {

    public String accelerate();
    public String decelerate();

    public String steerLeft();
    public String steerRight();
}
Run Code Online (Sandbox Code Playgroud)

现在我们有一个基本的(但不是抽象的)实现:

public class BasicCar implements Car {

    protected final String name;

    public BasicCar( String name ) {

        this.name = name;
    }

    // In the real word this method is important and does lots of stuff like calculations and caching
    protected String doDrive( String how ) {
        return name + " is " + how + "ing";
    }
    @Override
    public String …
Run Code Online (Sandbox Code Playgroud)

java inheritance design-patterns

29
推荐指数
1
解决办法
1535
查看次数

Java接口 - 实现对

是否有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的界面,在90%的情况下我想要的功能是相同的.

我的第一直觉是用静态方法创建一个具体的类.然后,当我想要默认功能时,我会将功能委托给静态方法.

这是一个简单的例子:

接口

public interface StuffDoer{
    public abstract void doStuff();
}
Run Code Online (Sandbox Code Playgroud)

具体实施方法

public class ConcreteStuffDoer{
    public static void  doStuff(){
        dosomestuff...
    }
}
Run Code Online (Sandbox Code Playgroud)

使用默认功能的具体实现

public class MyClass implements StuffDoer{
    public void  doStuff(){
        ConcreteSuffDoer.doStuff();        
    } 
}
Run Code Online (Sandbox Code Playgroud)

这里有更好的方法吗?

编辑

在看到一些提议的解决方案后,我想我应该更清楚我的意图.本质上我试图解决Java不允许多重继承.另外要明确我不是要声明Java是否应该允许多重继承.我只是在寻找为实现接口的类创建默认方法实现的最佳方法.

java design-patterns

15
推荐指数
3
解决办法
9414
查看次数