首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java反射:创建实现类

Java反射:创建实现类
EN

Stack Overflow用户
提问于 2009-07-04 19:41:32
回答 3查看 36.9K关注 0票数 76
代码语言:javascript
复制
Class someInterface = Class.fromName("some.package.SomeInterface");

现在如何创建实现someInterface的新类

我需要创建一个新类,并将其传递给一个需要SomeInterface作为参数的函数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-04 19:53:44

创建一些假装实现动态接口的东西实际上并不太难。在实现InvocationHandler之后,您可以使用java.lang.reflect.Proxy来处理任何方法调用。

当然,您实际上可以使用像BCEL这样的库生成一个真正的类。

如果这是为了测试目的,您应该看看模拟框架,如jMockEasyMock

票数 60
EN

Stack Overflow用户

发布于 2009-07-04 20:06:25

如果你想超越接口,你可能想看看cglibobjenesis。结合起来,它们将允许您做一些非常强大的事情,扩展抽象类并实例化它。(例如,jMock将它们用于此目的。)

如果你想坚持使用接口,那就照Jon Skeet说的做:)。

票数 3
EN

Stack Overflow用户

发布于 2009-07-04 20:26:56

实际上,您必须在Class.fromName()方法中使用类名,并将其强制转换为接口类型。看看下面的示例是否有帮助。

代码语言:javascript
复制
public class Main {

    public static void main(String[] args) throws Exception {
        Car ferrari = (Car) Class.forName("Mercedez").newInstance();
        System.out.println(ferrari.getName());
    }
}

interface Car {
    String getName();
}

class Mercedez implements Car {

    @Override
    public String getName() {
        return "Mercedez";
    }

}

class Ferrari implements Car {

    @Override
    public String getName() {
        return "Ferrari";
    }

}
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1082850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档