Java 将多个通用参数分组以便于访问

Java 将多个通用参数分组以便于访问,java,generics,Java,Generics,我有一个复杂的循环通用结构: interface Job<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E>> { } interface Recipient<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E> { } i

我有一个复杂的循环通用结构:

interface Job<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E>> { }
interface Recipient<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E> { }
interface Event<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E> { }
接口作业{}

接口接受者在我看来,这更像是一个设计问题,而不是泛型问题。将JobTypeGroup创建为一个类并对其进行调整如何?尝试为Job、Recipient和Event创建抽象类,并使用这些抽象类或其他类中的接口。它会给你灵活性。
class EmailJob implements Job<EmailJob, EmailRecipient, EmailEvent> { }
class VoiceCallJob implements Job<VoiceCallJob, VoiceCallRecipient, VoiceCallEvent> { }
//Recipient and Event classes omitted.
class LoadBalanceProcessor<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E>> {
    @Inject
    Provider<JobDao<J extends Job<J,R,E>, R extends Recipient<J,R,E>, E extends Event<J,R,E>>> jobDaoProvider;
    long getTimeToWait(J job, R recipient){...}
}
class LoadBalanceProcessor<JobTypeGroup>{
    @Inject
    Provider<JobDao<JobTypeGroup>> jobDaoProvider;
    long getTimeToWait(/* ?? */) {...}
}