【问题标题】:How to dynamically generate an implementation of an interface [closed]如何动态生成接口的实现[关闭]
【发布时间】:2012-11-01 04:00:16
【问题描述】:

假设我有一个为服务器提供连接属性的接口:

public interface ServerConfig {
    String getHostname();

    int getPort();
}

有没有办法在运行时动态创建所述接口的实现类,该实现类会从任意来源(应用程序参数、系统属性、外部配置文件等)返回值?

更具体地说,假设有一个 .properties 文件,其内容如下:

hostname = localhost
port = 80

还有一个方法

ServerConfig fromFile(String filename);

调用此方法应返回动态生成的ServerConfig 实现的实例,该实例将从filename 参数中指定的.properties 文件返回值。

澄清:

目标是能够添加其他接口,其方法将返回在外部源(即.properties 文件)中指定的值,而无需每次都手动实现它们。一个简单的解决方案是创建接口的实现,这些接口返回的属性值与被调用的接口方法名称相匹配,即调用getHostname() 将返回hostname 属性的值,从其他接口调用getBla() 将寻找并返回bla属性的值等。

【问题讨论】:

  • 是的,这就是接口,在运行时你实例化你想要实现它的类。我不知道这里的实际问题是什么,您只是在问如何使用界面吗?
  • 我想在运行时动态生成实现接口的类
  • 使用多态性?写代码?一个工厂? switch 语句?
  • 这些要求令人困惑。请描述你为什么认为你需要这个/你的目标是什么。
  • 代码不像魔术。开发人员只需编写代码。创建一个具体的public class PropertiesFileServerConfig implements ServerConfig 并在fromFile() 调用上返回它的一个具体实例。

标签: java dynamic reflection


【解决方案1】:

您不需要这样做。
您可以只编写一个实现接口并将文件名作为构造函数参数的普通类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2011-07-03
    相关资源
    最近更新 更多