Arv*_*ind 2 java abstract-class interface
我有一个使用arraylists的java程序 - 这些arraylists存储'变量',其中'变量'是一个抽象类.
现在,为了节省内存,我想使用一个名为HugeCollections-VanillaJava的java库 - 但是这个库需要定义一个接口.
如何将抽象类转换为接口?为了正确执行转换,我必须遵循哪些规则/限制?
最后,我是否可以使用我的抽象类进行最少的代码更改,以便需要接口的库也能正常工作?理想情况下,我不想改变抽象类......这可能吗?
如何将抽象类转换为接口?
制作抽象类源文件的副本.
在初始声明中将"class"更改为"interface".
更改名称(可选,取决于您正在做什么).
删除该类实现的任何方法的主体.
从其他单词中删除"abstract"一词.
删除所有私人和受保护的成员.
删除所有构造函数.
从公共成员中删除关键字"public".
如果您删除了任何代码(已实现的方法,私有或受保护的东西),请让您的原始抽象类实现您的界面并将其保留在那里.
(不完整)示例:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
Foo 作为界面:
public interface Foo
{
int SOME_CONSTANT = 42;
void doSomething(String s);
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,因为我确实有一些旧的东西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;
}
}
Run Code Online (Sandbox Code Playgroud)
......所以如果需要的话,一个实现可以使用它作为起点(虽然private bar在那里,它没有多大意义).
| 归档时间: |
|
| 查看次数: |
3985 次 |
| 最近记录: |