Java中通用类中的非元素构造函数



我正在创建一个图形级以表示无方向的图。最后,它将能够从文件(例如Newick或Dot格式(中读取和解析,因此,理想情况下,图中的顶点的名称应为字符串或整数,并使用仿制药作为舒适的解决方案。

该类指定为具有一个构造函数,该构造函数将整数作为顶点数量,并且是在任何两个节点之间创建边缘的概率的双倍。然后,它应该从该信息中创建一个随机图,在这里我遇到了仿制药的问题。该图用邻接列表表示,必须"强制"以整数为顶点的名称。在Java中的这个通用类中,是否可以在此通用类中拥有一个非一般构造函数?

一种解决方案是完全跳过仿制药并仅获取节点的字符串名称,但是我对是否有可能进行!

是的,这是可能的。但是我不建议这样做。这是原因:

简短答案:

MyGeneric mg = new MyGeneric();是相同的 MyGeneric<Object> mg = new MyGeneric<>();

长答案:

    ArrayList a = new ArrayList();
    a.add("somestring");
    a.add(15);
    a.add(new ArrayList());
    a.add(new Button());
    for(int i = 0; i < a.size(); i++){
        System.out.println(a.get(i).getClass());
    }

输出:

类Java.lang.String

类Java.lang.integer

类java.util.arraylist

类Java.awt.button

现在您可以将任何东西放在其中。这是因为它将类型自动设置为对象。为了使用例如对象上类字符串的方法,您需要先将其施放为字符串。

如果将数组列表的类型设置为例如字符串(ArrayList<String> a = new ArrayList<>();(,您不允许将任何东西都放置,从而将OBEJCT(实际上就是任何东西(扩展到您的容器。

最新更新