gpt4 book ai didi

java - 当接口(interface)没有抽象类中的方法时,访问该方法的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-01 16:44:00 24 4
gpt4 key购买 nike

基于某人编写的现有架构,我需要扩展我的实现。让我用示例代码来解释一下:

interface Configuration{
public String getPID();
public void display();
}

public abstract class BaseConfiguration implements Configuration {
@Override
public String getPID(){
//some code here
}
@Override
public void display(){
//some code here
}

abstract public <T> T clone(Dictionary<String, Object> properties,
Class<T> clazz);
}


public class XMLConfiguration extends BaseConfiguration{
public <T> T clone(Dictionary<String, Object> properties,
Class<T> clazz){
// implementation
}
}

public class ConfigurationAdmin
{
public static Configuration getCondfiguration(){
return new XMLConfiguration();
}
}

我可以理解,不可能从接口(interface)调用clone方法。

Configuration conf = ConfigurationAdmin.getConfiguration();
conf.clone(someDictionary, Foo.class) // Gives compilation error

调用克隆方法的最佳方式是什么?

最佳答案

如果对象实例通过 instanceof 检查,则可以在转换为 BaseConfiguration 后调用它:

if (o instanceof BaseConfiguration) {
((BaseConfiguration) o).clone(someDictionary, Foo.class);
} else {
throw new AssertionError("Does not extend BaseConfiguration");
}

关于java - 当接口(interface)没有抽象类中的方法时,访问该方法的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430685/

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