2

UserCourse 和 NewReleases 是具有相同方法的不同类。但输出不同。

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);

我收到“向用户课程添加演员表”错误。两个类都有这个方法。

是否可以这样做?如果是,请告诉我如何。

4

2 回答 2

2

您希望它如何工作,useCourses是基本类型Object- 它没有这种方法。

了解Interfaces以及如何使用它们。

于 2012-04-12T06:35:20.150 回答
0

您应该转换为具有该方法的实际对象。

例子:

((UserCourses)userCourses).getUserCourses().get(i);或者

((NewReleases)userCourses).getUserCourses().get(i);

Object是所有对象都派生自的通用超类型。

这就是为什么您可以将 anew UserCourses和 a分配NewReleasesObject

但是,您必须向下转换为特定对象才能调用实际方法。

这种方法虽然是不好的编程,因为它不是类型安全的。但是这段代码可以适应这种变化。

对于重构代码,您应该遵循另一种方法。阅读有关接口作为@Nim 的答案

于 2012-04-12T06:37:42.477 回答