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

标签 java generics interface return-type

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

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

例如:

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

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

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

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

( 应该能够更改“BasicUser” -> 不能更改类本身,而是将为新用户创建的对象的类更改为不同的“用户”实现)

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

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

最佳答案

传入类型的实例,例如

<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);

关于java - 如何将返回类型作为参数传递(无反射?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555692/

相关文章:

C# 基类型列表添加通用子实例

java - 接口(interface)和参数多态性

Java 泛型 - Make Generic 扩展 2 个接口(interface)

java - 使用参数从 JPQL 查询中选择全部

java - 为另一个包中的类导入静态

c# - 泛型方法声明

c# - 在 C# 中将哈希表转换为字典

python - Python 界面如何工作(在 Twisted 中)?

java - 将颜色 RGB 转换为 HEX(整数结果)

java - Spring-Boot-Test @MockBeans 是否应该符合 @ConditionalOnBean 条件?