gpt4 book ai didi

java - 动态访问用户提供的类的用户提供的属性的有效/最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 02:25:26 24 4
gpt4 key购买 nike

我正在编写一个通用库,它必须访问用户提供的类实例的特定属性。我需要获取这两个类(例如 C)及其属性(例如 p),作为用户的输入。这应该很快,因为每秒会执行数百次。

反射是不合时宜的,因为它太慢并且只能用于最后的手段。我想到了两种方法:

  • 该类必须实现一个函数接口(interface) I,它为 b 提供 getter。
  • (令人垂涎)用户提供了一些函数 F 以及类实例,当应用于类时,返回属性 b。

方法一:

public MyClass<T extends SomeInterface> {

这解决了问题,因为我可以访问类中用户提供的类型的属性,如下所示:

T obj;
obj.getRequiredProperty();

方法 2:

SomeType j = new MyClass<SomeType>(SomeFunction);

这应该可以通过在将 SomeFunction 应用于类对象时返回所需的属性来解决问题。

Object o = j.apply(SomeFunction);

方法 1 不起作用,因为它限制用户使用他无法修改以实现所需接口(interface)的类。例如,如果某个类位于第三方库中,则用户无法修改该类/POJO 来实现接口(interface),从而使该类变得可用。这可能是一个限制,但不是一个障碍。

最佳答案

使用方法 1。方法 1 和 2 都需要用户修改他们正在使用的类,但方法 1 更具可读性/可维护性。例如,如果您意识到需要许多必需的属性,则需要在构造函数中传递许多函数,这将变得难以管理。

如果用户无法修改他正在使用的类,他可以扩展/包装它们。据我所知,这些是您唯一的选择。通常,避免反射总是更好。

关于java - 动态访问用户提供的类的用户提供的属性的有效/最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com