从另一个类的构造函数中获取值

时间:2011-03-21 03:00:07

标签: java constructor

对于很多人来说,我确信这是一个非常简单的问题,但我正在努力解决这个问题。我试图从以下构造函数中获取值并将其放在向量中。

每次我将对象添加到向量时,放在向量内的值为null。如何将数字作为放入向量的值?

CInteger类:

public class CInteger  
{
    private int i;
    CInteger(int ii)
    {
        i = ii;
    }
}

在我的A1类中,构造函数和我尝试获取值:

    Object enqueue(Object o) 
    {
        CInteger ci = new CInteger(88);
        Object d = ??
        add(tailIndex, d);// add the item at the tail
    }

感谢大家的任何见解和帮助,我还在学习。

编辑:已解决

CInteger类:

public class CInteger implements Cloneable // Cloneable Integer 
{
    int i;
     CInteger(int ii)
    {
        this.i = ii;
    }

public int getValue()
    {
        return i;
    }

}

两种排队方法:

public void enqueue(CInteger i)  // enqueue() for the CInteger
{
    add(tailIndex, new Integer(i.getValue())); get int value and cast to Int object
}
public void enqueue(Date d)  // enqueue() for the Date object
{
    add(tailIndex, d);
}

非常感谢大家。 :d

5 个答案:

答案 0 :(得分:2)

您可以简单地重载enqueue类以同时使用Dates和Integers。在任何一种情况下,听起来你需要在CInteger中使用getValue()方法来访问int值。

public class CInteger
{
    //constructors, data

    public void getValue()
    {
        return i;
    }
}

然后你可以在另一个类中使用两个enqueue()方法:

public void enqueue(Date d)
{
    add(tailIndex, d);
}

public void enqueue(CInteger i)
{
    add(tailIndex, new Integer(i.getValue()); //access the int value and cast to Integer object
}

Java将根据参数自动知道您正在调用哪一个。

答案 1 :(得分:1)

目前还不完全清楚你究竟想做什么,但我认为这就足够了:

Object enqueue() {
    CInteger ci = new CInteger(88);
    add(tailIndex, ci);// add the item at the tail
    return ci;  // this will automatically upcast ci as an Object
}

答案 2 :(得分:1)

试试这个。

public class CInteger {
    private int i;

    CInteger(int ii) {
       this.i = ii;
    }
}

Using the this Keyword

答案 3 :(得分:1)

不会只是:

void main(string[] args)
{
    CInteger ci = new CInteger(88);

    encqueue(ci.i);
}

Object enqueue(Object o) 
{
    add(tailIndex, o);
}

或者我错过了什么?

答案 4 :(得分:1)

首先,Constructors永远不会返回任何值。您必须通过其对象访问该值,或者您必须使用getter方法。

在您的情况下,无法直接访问“private int i;”。因此,请尝试将其公之于众或采用一些getter方法。

所以试试吧:

    CInteger ci = new CInteger(88);
    Object d = ci.i; // if i is public member
    add(tailIndex, d);

    ...
    private int i;
    ...
    public int getI() {
        return  this.i;
    }
    ...
    CInteger ci = new CInteger(88);
    Object d = ci.getI(); 
    add(tailIndex, d);