如何将返回类型作为参数传递(无反射?)

时间:2016-04-11 17:49:07

标签: java generics interface return-type

我正在尝试创建一个框架。

此框架用于在内部解析来自Internet的数据,并将其提供给框架(API)的用户

每个例子:

  • 该框架具有Class BasicUser,其中包含(String name,long creation)
  • 此类实现一个名为“User”的接口,用于描述基本行为。
  • 每次在某个地方提到这个用户时,我会调用某种监听器,给出一个“用户”对象

现在这很棒,因为他们可以访问用户,但我希望使用该框架的人能够自己实现User。

我不想让他们做一堆包装。

使用我的Framework的人应该能够将“BasicUser”更改为用户创建的类(实现“User”)。

should be able to change "BasicUser" - >无法更改类本身,而是将为新用户创建的Object类更改为其他“用户”实现

是否可以在不使用反射的情况下执行此操作?

传递给Listener的“User对象”是否也可以使用Generics自动转换为框架用户提供的Class?

1 个答案:

答案 0 :(得分:3)

传入该类型的实例,例如

<T> T getResult(T instance) { ... }

Float result = getResult(Float.valueOf(1.0f));

或使用返回类型参数化的泛型类型,例如

<T> T getResult(Class<T> clazz) { ... }

String result = getResult(String.class);

或使用参数化列表

<T> T getResult(List<T> list) { ... }`.

List<Integer> list = new ArrayList<>();
Integer result = getResult(list);