كيف تحصل على فئة فئة مجردة (كائن) في جافام؟

StackOverflow https://stackoverflow.com/questions/161614

  •  03-07-2019
  •  | 
  •  

سؤال

أحتاج إلى الحصول على فئة كائن في وقت التشغيل.

بالنسبة لفصل غير مبتذل ، يمكنني أن أفعل شيئًا مثل:

public class MyNoneAbstract{
    public static Class MYNONEABSTRACT_CLASS = new MyNoneAbstract().getClass();

لكن بالنسبة لفصل مجردة ، لا يعمل هذا (يعطيني دائمًا Object)

public abstract class MyAbstract{
    public static Class MYABSTRACT_CLASS = MyAbstract.class.getClass();

سيتم تشغيل هذا الرمز في بيئات Javame.

هل كانت مفيدة؟

المحلول

تحتاج فقط

MyAbstract.class

هذا التعبير يرجع كائن الفئة الذي يمثل myabstract.

نصائح أخرى

الرمز الذي تريده في الحالة التجريدية هو:

public abstract class MyAbstract{
    public static Class MYABSTRACT_CLASS = MyAbstract.class;
}

على الرغم من أنني شخصياً لن أكلف نفسي عناء تحديد الثابت واستخدمت myabstract.class طوال الوقت.

كنت أتوقع أن يكون الرمز الذي كتبته قد أعاد "الفصل" ، وليس "كائن" الفصل.

أعتقد أن المزيد من المعلومات مطلوبة هنا. في جافا ، لا يمكن إنشاء طبقة مجردة. هذا يعني أن كائنًا في وقت التشغيل لا يمكن أن يكون صفه مجردة. يجب أن تكون فئة فرعية تنفذ جميع الأساليب المجردة. في Javame ، Object.getClass() يجب أن يكون كل ما تحتاجه. هل تحاول بطريقة ما إعادة تكوين التسلسل الهرمي في الفصل في وقت التشغيل؟

في هذه الحالة ، يمكنك تنفيذ شيء مثل هذا بدلاً من ذلك:

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top