程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList??

开发过程中遇到为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?的解决方法建议,希望对你解决为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?有所启发或帮助;

我有这样的单例类:

public class Singleton
    private static Singleton instance;
    private ArrayList<Release> releases;
    private ArrayList<Place> places;
    ArrayList<ArrayList<Object>> List = new ArrayList<ArrayList<Object>>(2);

   private Singleton() {
       releases = new ArrayList<Release>();
       places = new ArrayList<Place>();
       List.add(releasE); //error,required AL<Object>,provIDed AL<Release> 
       List.add(places); //same
   }

   public static Singleton geTinstance(){
    /* Singleton code */
   }

我认为这是可能的,因为每个类都扩展了 Object 类。我的目的是从 AL 保存为对象 a 的文件中读取,@R_696_11446@些 AL 包含在一个 AL 的集合中,其中 al.get(PLACES_INDEX) 将返回位置等等。这是一个好方法还是我遗漏了什么?

稍后我想有一些统一的方法,例如:

public ArrayList<T> getArrayList() {
   /*return places or releases based on <T>*/
}

我不知道这是否可能,因为这个类是单例。

解决方法

我将解释为什么您会收到错误消息,但从您的描述来看,这对您的班级来说似乎是一个糟糕的设计:不要将“通用”列表存储在列表中,而是根据某个索引访问它们。并且不要创建像 public ArrayList<T> getArrayList() { 这样根据类型 T 返回列表之一的方法。这是过度设计,使您的代码更难维护,更容易被破坏。

只需单独保存不同的列表,并为每个列表提供吸气剂。如果您正在读取文件并希望将内容反序列化为数据结构,只需创建一个对内容建模的类结构即可。您的代码将更加简单易读。

尽管 ReleaseObject 的子类,但 ArrayList<Release> 不是 ArrayList<Object> 的子类,因此您不能添加 {{ 1}} 到 ArrayList<Release>(我们说 generics are not covariant)。如果 Java 允许您这样做,那么您最终可能会遇到破坏代码通用用法的场景:

ArrayList<ArrayList<Object>>

大佬总结

以上是大佬教程为你收集整理的为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?全部内容,希望文章能够帮你解决为什么我不能将 CustomType ArrayList 添加到 Object ArrayLists 的 ArrayList?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。