当前位置: 首页 > 面试题库 >

无法实例化类型Set

孔礼骞
2023-03-14
问题内容

我试图创建一个字符串集,其中填充了哈希表中的键,以便for-
each循环可以遍历该Set并将默认值放入哈希表中。我仍在学习Java,但是我尝试做的方式不是有效的语法。有人可以演示这样做的正确方法,并解释为什么我的方法行不通,而他们的方法行得通。

private Hashtable<String, String> defaultConfig() {
    Hashtable<String, String> tbl = new Hashtable<String, String>();
    tbl.put("nginx-servers","/etc/nginx/servers");
    tbl.put("fpm-servers","/etc/fpm/");
    tbl.put("fpm-portavail","9001");
    tbl.put("webalizer-script","/usr/local/bin/webalizer.sh");
    tbl.put("sys-useradd","/sbin/useradd");
    tbl.put("sys-nginx","/usr/sbin/nginx");
    tbl.put("sys-fpmrc","/etc/rc.d/php_fpm");
    tbl.put("www-sites","/var/www/sites/");
    tbl.put("www-group","www"); 
    return tbl;
}

//This sets missing configuration options to their defaults.
private void fixMissing(Hashtable<String, String> tbl) {
    Hashtable<String, String> defaults = new Hashtable<String, String>(defaultConfig());
    //The part in error is below...
    Set<String> keys = new Set<String>(defaults.keySet());

    for (String k : keys) {
        if (!tbl.containsKey(k)) {
            tbl.put(k, defaults.get(k));
        }
    }
}

问题答案:

Set 不是类,而是接口。

因此,基本上可以仅实例类实现SetHashSetLinkedHashSetTreeSet

例如 :

Set<String> mySet = new HashSet<String>();


 类似资料:
  • 问题内容: 当我尝试运行此代码时: 我收到此错误: 我不明白为什么我无法实例化课程…在我看来似乎是对的… 问题答案: 是一个接口,因此您无法直接实例化它。您可以实例化一个具体的子类,例如:

  • 问题内容: 我有以下代码: 错误: 是我的EJB项目中的一个实体。为什么我收到此错误? 问题答案: 是一个接口。接口无法实例化。只能实例化具体类型。你可能想使用,这是一个 实现 了的接口。

  • 我试图将图像添加到数组中,但它给出了错误不能实例化类型Image j 原因会是什么?

  • 问题内容: 我有这堂课 我正在尝试使用此方法在此类之外创建变量 这给了我这个错误 问题答案: 在实例化泛型时,应将其替换为相应的对象。 例如:

  • 下面是我收到错误的代码(在“new”之后的第二个“Killer”处)。 这给我带来了不少麻烦,因为我看不出为什么基于Killer的构造函数,这个声明应该有效。 这是杀手班: 我知道这可能有一个简单的解决方案,但到目前为止,我还没有看到。

  • 我已经在网上看过了,但每个人都有同样的问题。 有人能帮帮我吗?谢谢!