【问题标题】:Throws Exception while instantiating class实例化类时抛出异常
【发布时间】:2013-02-17 06:34:01
【问题描述】:

我有一个非常简单的问题-

我有一个名为DEClient 的类,它的构造函数是这样的-

public DEClient(List<DEKey> keys) {
    process(keys);
}

DEKey类是这样的-

public class DEKey {

    private String name;
    private String value;

    public DEKey(){
        name = null;
        value = null;
    }

    public DEKey(String name, String value){
        this.name  = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

现在我正在尝试实例化DEClient 构造函数。所以为此我需要List&lt;DEKey&gt;

所以我所做的是使用service.getKeys()(将返回String)和id 作为值来实例化DEKey 类,如下所示。

DEKey dk = new DEKey(service.getKeys(), id);

//The below line throws exception whenever I am running.
DEClient deClient = new DEClient((List<DEKey>) dk);

我在这里做错了什么?

【问题讨论】:

  • 什么是bk(不是dk)以及显式转换是什么(如果bkList&lt;DEKey&gt;,则不需要)?
  • @A--C,糟糕,在编辑代码时,我忘了编辑一个字。我刚刚用 dk 更新了代码。错误地是dk。对此感到抱歉。
  • 你在提交之前是否阅读过你的代码???? dkDEKey,你为什么要把它转换成 list&lt;DeKey&gt;??

标签: java list class constructor instantiation


【解决方案1】:

您需要先创建一个List,然后将您的密钥添加到该List。像你所做的那样投射不是这样做的方法,因为DEKey 不是 List 并且投射到它会抛出一个ClassCastException

DEKey dk = new DEKey(service.getKeys(), id);

List<DEKey> list = new ArrayList<DEKey>();
list.add (dk);

DEClient deClient = new DEClient(list);

【讨论】:

    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多