我正在尝试使用通用方法构建一页汇编器。以下是一段代码。
在此代码中,IEntity是数据库实体的标记接口。

public abstract class PageHrefBuilder implements HrefBuilder<IEntity, PageLinks> {

    @Override
    public PageLinks buildLinks(IEntity entity) {
        return null;
    }
}

public interface HrefBuilder<E extends IEntity, L extends Links> {

    public L buildLinks(E dto);
}

所以我们有一个接口说可以使用IEntity类型的类建立链接并返回Links类型的值。所以我想在抽象类中编写一些通用代码,而抽象类不知道它应该处理哪种类型的实体。
例如,实体可以是UserEntity,OrderEntity等。

所以我的问题是,如何在抽象类中使用instanceof或是否采用其他方法来使类实例建立链接。

有人可以帮我这个忙。

最佳答案

您可以使 buildLinks 方法采用Class<T>参数,而不是必须传递的对象。

所以会的

public L buildLinks(Class<E> dto);

然后在您的抽象类中
@Override
public PageLinks buildLinks(Class<IEntity> dto) {
    return dto.newInstance();
}

希望这个答案可以对您有所帮助。

关于java - 如何使用通用方法获取实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60911913/

10-09 20:41