java中两个类中任意一个的动态对象
UserCourse和NewRelease是具有相同方法的不同类。但产量不同java中两个类中任意一个的动态对象,java,Java,UserCourse和NewRelease是具有相同方法的不同类。但产量不同 final Object userCourses; if(mFlag == 11){ try{ userCourses = new UserCourses(params[0]); }catch(Exception e){ Log.i(TAG, "Exception: " + e.getMessage
final Object userCourses;
if(mFlag == 11){
try{
userCourses = new UserCourses(params[0]);
}catch(Exception e){
Log.i(TAG, "Exception: " + e.getMessage());
}
}
else if(mFlag == 44){
try{
userCourses = new NewReleases();
}catch(Exception e){
Log.i(TAG, "Exception: " + e.getMessage());
}
}
现在,当我打电话时
userCourses.getUserCourses().get(i);
我得到了“向userCourses添加cast”错误。
两个类都有这个方法
有没有可能做到这一点?如果是,请告诉我如何操作。您希望如何操作,
useCourses
是基本类型的对象
——没有此方法
了解
接口
以及如何使用它们。您应该对具有该方法的实际对象进行强制转换
例如:
((UserCourses)UserCourses.getUserCourses().get(i)代码>或
((新版本)userCourses.getUserCourses().get(i)代码>
对象
是所有对象派生自的通用超类型
这就是为什么您可以将新用户课程
和新版本
分配给对象
但是,您必须向下转换到特定的对象才能调用实际的方法
然而,这种方法是糟糕的编程,因为它不是类型安全的。
但是,这段代码可以用于此更改
对于重构代码,您应该遵循另一种方法。通过@Nim-answer了解接口嘿,谢谢。我已经创建了接口,但不知道它是否也被使用。我将学习并使用它们。