+1 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)
ویرایش شده قبل توسط

من یک کلاس generics در جاوا دارم که به صورت زیر است:

 

public abstract class RhaHibernateAction<HibernateObject extends Object> extends RhaGenericAction {
.
.
.
           manager.removeObject(HibernateObject.class, new Long(branchId), request);
.
.
.
 
}

چرا HibernateObject.class مجنر به خطا می شود؟

java: E:\workspace\pikab\SRC\src\org\broker\action\RhaHibernateAction.java:42: cannot select from a type variable

 

برای حل این مشکل چه کار می توانم بکنم؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

شما از type parameter های generics مربوط به کلاستون در removeObject استفاده کرده اید و از آن اطلاعاتی را می خواهید که در زمان کامپایل مشخص نیست و در نتیجه این خطا را رخ می دهد، برای اینگونه موارد یک راه این است که یک شئ از  Class<T> بعنوان constructor به کلاس RhaHibernateAction بفرستید و آن را در یک instance variable ذخیره کنید و از آن متغییر اطلاعات را بگیرید . شما باید کد زیر را بصورت زیر تغییر دهید:

public abstract class RhaHibernateAction<T extends Object> 
    extends RhaGenericAction {

    private Class<T> clazz;

    public RhaHibernateAction(Class<T> clazz){
      this.clazz = clazz;
    }
.
.
    manager.removeObject(clazz, new Long(branchId), request);
.
.
}

سوالات مشابه

+1 امتیاز
2 پاسخ 813 بازدید
+1 امتیاز
2 پاسخ 2.0هزار بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط sara_sheikhi (20 امتیاز)
+1 امتیاز
1 پاسخ 978 بازدید
+1 امتیاز
1 پاسخ 1.5هزار بازدید
+2 امتیاز
1 پاسخ 334 بازدید
سوال شده 3 سال قبل در برنامه نویسی توسط sina-deuxshiri (12 امتیاز)
+2 امتیاز
1 پاسخ 404 بازدید
سوال شده 3 سال قبل در برنامه نویسی توسط 1993 (242 امتیاز)
0 امتیاز
1 پاسخ 432 بازدید
0 امتیاز
2 پاسخ 1.6هزار بازدید
...