Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中两个类中任意一个的动态对象_Java - Fatal编程技术网

java中两个类中任意一个的动态对象

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

UserCourse和NewRelease是具有相同方法的不同类。但产量不同

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了解接口

嘿,谢谢。我已经创建了接口,但不知道它是否也被使用。我将学习并使用它们。