是否可以在Java中定义以下内容:

public interface IGenericRepo<T> {
    void add();
    void delete();
    void attach();
}

public interface IGenericRepo<Book> {
    default String bookSpecificMethod(){
      return "smthn";
    }
}

public class NHGenericRepo<T> implements IGenericRepo<T>{
    /* implementation */
}

public class NHUnitOfWork implements UnitOfWork{
    @Autowired
    public void setBookRepo(NHGenericRepo<Book> bookRepo) {
        this.bookRepo= bookRepo;
    }
    public NHGenericRepo<Book> getBookRepo() {
       return bookRepo;
    }
    private NHGenericRepo<Book> bookRepo;
}


并能够在代码中的某处具有:

{
    @Autowired
    public void setNhuw(NHUnitOfWork nhuw) {
        this.nhuw = nhuw;
    }

    private NHUnitOfWork nhuw;

    /**/

    {
        String st = this.nhuw.getBookRepo().bookSpecificMethod();
    }
}


在.net中,可以通过将扩展方法与“ this IGenericRepo ”作为第一个方法参数一起使用来实现。

最佳答案

您能找到的最接近的是:

public interface IBookGenericRepo extends IGenericRepo<Book> {
    void BookSpecificMethod();
}

07-28 08:21