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

Jor*_*nks 2 java generics interface return-type

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

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

每个例子:

  • 该框架有一个 BasicUser 类(字符串名称,长创建)
  • 该类实现了一个名为“User”的接口,它描述了基本行为。
  • 每次在某个地方提到这个用户时,我都会调用某种监听器,给出一个“用户”对象

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

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

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

(should be able to change "BasicUser"-> 无法更改类本身,而是将为新用户创建的对象的类更改为不同的“用户”实现)

是否可以在不使用反射的情况下做到这一点?

传递给监听器的“用户对象”是否也可以使用泛型自动转换为框架用户提供的类?

And*_*ner 6

传入该类型的任一实例,例如

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

Float result = getResult(Float.valueOf(1.0f));
Run Code Online (Sandbox Code Playgroud)

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

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

String result = getResult(String.class);
Run Code Online (Sandbox Code Playgroud)

或使用参数化列表

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

List<Integer> list = new ArrayList<>();
Integer result = getResult(list);
Run Code Online (Sandbox Code Playgroud)