واجهة جافا مع أدوية بديلة ذات معلمات محددة

لدي متطلب حيث أحتاج إلى استخدام الأدوية الجنسية حيث يستطيع العميل استخدام نوع البيانات المرغوب فيه عند استخدام الخدمة الخاصة بي. يبدو الرمز مثل:

public interface MyService {

    void meth1(T type);
}

@Service("abc")
public class MyServiceImpl implements MyService {

    @Override
    public void meth1(T type) {
    }
}

حيث تعتبر Base فئة تجريدية. سيستخدم العملاء فئة فرعية منه للاتصال بهذه الخدمة.

public abstract class Base {
}

المشكلة: لا تقوم فئة التنفيذ (MyServiceImpl) بالتجميع. لست متأكدًا من المشكلة هنا.

سيستخدم العملاء هذه الخدمة ويدفعون أنواع البيانات الخاصة بهم التي هي فئة فرعية من Base. مثل شيء من هذا القبيل:

    @Autowired
    @Qualifier("abc")
    private MyService service;


service.meth1(xx)  //where xx is subclass of Base

هل أقوم بشيء خطأ جوهري هنا. الرجاء الاقتراح.

0
تعتبر الخدمة العامة فكرة سيئة. سوف ينتهي الأمر في النهاية. إذا كنت تخطط لتهيئته في Configuration مع Bean فسيكون ذلك منطقيًا - ولكن في حالتك ، يجب ألا تكون الخدمة عامة.
وأضاف المؤلف Boris the Spider, مصدر

1 إجابة

يجب أن يكون حد النوع في تعريف معلمة النوع:

public class MyServiceImpl implements MyService
0
وأضاف
مرحبا عيران ، شكرا. هذا يعمل كما كنت أتوقع. إحدى مزايا هذا أنه يقيد العملاء إلى نوع بيانات معين. وبالتالي مساعدة في الترميز إلى نوع معين وتجنب القضايا مثل @ AutowiredQualifier ("abc") الخاص خدمة MyService . service.methd1 (XX)؛//يسمح فقط XX وأنواعها الفرعية
وأضاف المؤلف pankajkk, مصدر
واحد أكثر من الملاحظة. يعطيني الربيع بطريقة سحرية مثيلًا مختلفًا للفاصولياء استنادًا إلى المعلمة المربوطة. كنت أتوقع أدناه أن تكون قضية لكنها عملت بشكل جيد. Autowired Qualifier ("abc") خدمة MyService الخاصة؛ Autowired Qualifier ("abc") الخاص بـ MyService service1؛//أسفل المكالمات يعمل بشكل رائع دون مشاكل service.meth1 (XX)؛ service1.meth1 (YY) هنا XX ، YY هي 2 POJOs مختلفة تمتد من القاعدة
وأضاف المؤلف pankajkk, مصدر
وتجدر الإشارة إلى أن الخدمة العامة التي يتم بثها أوتوماتيكيًا من قبل الربيع ، لا تخدم سوى القليل أو لا هدف لها ، حيث لا يوجد لدى Spring طريقة لمعرفة الحجة العامة التي يجب وضعها.
وأضاف المؤلف Boris the Spider, مصدر