gpt4 book ai didi

java - 如何将抽象类转换为接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 02:05:55 25 4
gpt4 key购买 nike

我有一个使用数组列表的java程序 - 这些数组列表存储“变量”,其中“变量”是一个抽象类。

现在,为了节省内存,我想使用一个名为 HugeCollections-VanillaJava 的 java 库,但是这个库需要定义一个接口(interface)。

如何将抽象类转换为接口(interface)?为了正确执行转换,我必须遵循哪些规则/限制?

最后,我是否可以通过最少的代码更改来使用我的抽象类,以便需要接口(interface)的库也能正常工作?理想情况下,我不想根本改变抽象类......这可能吗?

最佳答案

how do I convert an abstract class into an interface?

  1. 复制抽象类源文件。

  2. 在初始声明中将“class”更改为“interface”。

  3. 更改名称(可选,具体取决于您正在执行的操作)。

  4. 删除类实现的任何方法的主体。

  5. 从其他词中删除“抽象”一词。

  6. 删除所有私有(private)和 protected 成员。

  7. 删除所有构造函数。

  8. 从公共(public)成员中删除关键字“public”。

如果您删除了任何代码(实现的方法、私有(private)或 protected 内容),请让原始抽象类实现您的接口(interface)并将这些内容留在那里。

(不完整)示例:

Foo 作为抽象类:

public abstact class Foo
{
private int bar;

public static final int SOME_CONSTANT = 42;

public Foo(b) {
this.bar = b;
}

public abstract void doSomething(String s);

protected int doSomethingElse() {
return this.bar * 2;
}
}

Foo 作为接口(interface):

public interface Foo
{
int SOME_CONSTANT = 42;

void doSomething(String s);
}

就我而言,由于我确实有一些旧 Foo 所做的东西,我可能会有 AbstractFoo 或其他东西:

public abstact class AbstractFoo implements Foo
{
private int bar;

public Foo(b) {
this.bar = b;
}

public abstract void doSomething(String s);

protected int doSomethingElse() {
return this.bar * 2;
}
}

...这样,如果需要,实现可以使用它作为起点(尽管其中有 private bar ,它不会产生很多感)。

关于java - 如何将抽象类转换为接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com