Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java构造函数问题_Java_Constructor - Fatal编程技术网

Java构造函数问题

Java构造函数问题,java,constructor,Java,Constructor,我正在制作一个内存系统,我有内存和内存元素(MemEl)的代码,还有我的测试代码,我正在尝试编写这些构造函数:MemEl(int)、MemEl(long)、MemEl(String)。我已经完成了短字节和字节的转换,但我需要一些帮助。谢谢 这是我的记忆代码: class Memory{ private MemEl[] memArray; private int size; public Memory(int s) {size = s; memArr

我正在制作一个内存系统,我有内存和内存元素(MemEl)的代码,还有我的测试代码,我正在尝试编写这些构造函数:MemEl(int)、MemEl(long)、MemEl(String)。我已经完成了短字节和字节的转换,但我需要一些帮助。谢谢

这是我的记忆代码:

class Memory{
    private MemEl[] memArray;
    private int size;
    public Memory(int s)
    {size = s;
        memArray = new MemEl[s];
        for(int i = 0; i < s; i++)
            memArray[i] = new MemEl();
    }
    public void write (int loc, int val)
    {if (loc >=0 && loc < size)
            memArray[loc].write(val);
        else
            System.out.println("Index Not in Domain");
    }
    public MemEl read (int loc)
    {return memArray[loc];
    }
    public void dump()
    {
        for(int i = 0; i < size; i++)
            if(i%1 == 0)
                System.out.println(memArray[i].read());
            else
                System.out.print(memArray[i].read());
    }
}
这是我的测试代码

class Test{
    public static void main(String[] args)
    {
        int size = 100;
        Memory mymem;
        mymem = new Memory(size);
        mymem.write(98,4444444);
        mymem.write(96,1111111111);
        MemEl elements;
        elements = mymem.read(98);
        System.out.println(mymem);
        mymem.dump();
        }
}

元素
是一个
int
byte
short
可以隐式(在您不知道的情况下)转换为
int
long
String
不能,因此您将无法向
MemEl
类添加构造函数。如果您可以承受精度损失,则可以强制转换:

public MemEl(long longValue) {
    elements = (int) longValue;
}
和解析:

public MemEL(String str) {
    elements = Integer.parseInt(str);
}

我假设这应该被标记为“java”而不是“javascript”,那么您使用所有这些构造函数实际要实现什么呢?尝试使用泛型,这样您就不必为每个类型/类编写一个类。
public MemEL(String str) {
    elements = Integer.parseInt(str);
}