Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Arrays_Generics - Fatal编程技术网

Java 无法将整数对象推入通用数组

Java 无法将整数对象推入通用数组,java,arrays,generics,Java,Arrays,Generics,我试图将整数推送到一个通用数组上。这是我的密码: import java.lang.reflect.Array; public class StackMain { public void main (String[]args) { Integer[] oneStack = null; Integer a = new Integer("1"); oneStack = (Integer[])Array.newInstance(Int

我试图将整数推送到一个通用数组上。这是我的密码:

import java.lang.reflect.Array;

public class StackMain
{
    public void main (String[]args)
    {
        Integer[] oneStack = null;
        Integer a = new Integer("1");

        oneStack = (Integer[])Array.newInstance(Integer.class, 10);

        push(a, oneStack);
    }
}


public class Stack<T>
{
    private T[] oneStack;

    public void push(T item, T[] array)
    {
        array[1] = item; //dummy method for testing    
    }
}
import java.lang.reflect.Array;
公共类StackMain
{
公共void main(字符串[]参数)
{
整数[]oneStack=null;
整数a=新的整数(“1”);
oneStack=(Integer[])Array.newInstance(Integer.class,10);
推送(a,单堆栈);
}
}
公共类堆栈
{
私有T[]oneStack;
公共无效推送(T项,T[]数组)
{
数组[1]=item;//用于测试的虚拟方法
}
}
但是由于某种原因,
push(a,oneStack)
给了我一个“找不到符号”错误。我应该使用
Integer[]
而不是
T[]
?我认为整数是一个通用的

推送(a,单堆栈);给我找不到符号的原因

是的,因为您试图在
StackMain
中调用它,而它只存在于
Stack
中。您需要创建一个
堆栈
,以便调用它:

Stack<Integer> stack = new Stack<Integer>();
stack.push(a, oneStack);
Stack Stack=新堆栈();
stack.push(a,oneStack);
如果您想允许在不创建实例的情况下调用它,那么它需要是一个
静态
方法。(我假设在现实中,有更多的代码。)

(如果您对Java非常陌生,我建议您在担心泛型之前,先关注真正的核心内容,如调用方法和创建对象。您需要尽快解决这些问题,但如果您试图在掌握基本知识的同时了解这些问题,从长远来看,这会降低您的速度。)

推送(a,单堆栈);给我找不到符号的原因

是的,因为您试图在
StackMain
中调用它,而它只存在于
Stack
中。您需要创建一个
堆栈
,以便调用它:

Stack<Integer> stack = new Stack<Integer>();
stack.push(a, oneStack);
Stack Stack=新堆栈();
stack.push(a,oneStack);
如果您想允许在不创建实例的情况下调用它,那么它需要是一个
静态
方法。(我假设在现实中,有更多的代码。)


(如果您对Java非常陌生,我建议您在担心泛型之前,先关注真正的核心内容,如调用方法和创建对象。您需要尽快解决这些问题,但如果您试图在掌握基本知识的同时了解这些问题,从长远来看,这会降低您的速度。)

在调用堆栈对象上的push(…)方法之前,您需要创建堆栈对象的实例

在调用堆栈对象上的push(…)方法之前,您需要创建堆栈对象的实例

除非您创建了堆栈的实例,然后引用它,否则方法push对StackMain类不可见(因为它在stack类中)。您应该将此方法本地化为StackMain类,或者创建Stack类的实例。

除非您创建Stack实例并引用它,否则StackMain类(在Stack类中)看不到方法推送。您应该将此方法本地化为StackMain类,或者创建Stack类的实例。

您的
Stack.push打算做什么?我不清楚您是想将
推到
数组
还是
oneStack
。我会努力简化您的代码。我怀疑它不需要做代码正在做的事情的一半。我需要使用一个实现堆栈ADT的数组。你的
stack.push
打算做什么?我不清楚您是想将
推到
数组
还是
oneStack
。我会努力简化您的代码。我怀疑它不需要做你的代码正在做的一半的事情。我需要使用一个实现堆栈ADT的数组。堆栈是指堆栈对象还是只是用来访问stack类中的方法?啊,谢谢它工作,似乎我需要实例化一个堆栈对象,即使我没有任何构造函数。@david:你有一个构造函数:如果你没有显式指定任何构造函数,编译器为你提供的默认公共无参数构造函数。堆栈是指堆栈对象还是只用于访问堆栈中的方法类?啊,感谢它的工作,似乎我需要实例化一个堆栈对象,即使我没有任何构造函数。@david:你有一个构造函数:编译器为你提供的默认公共无参数构造函数,如果你没有显式指定任何构造函数的话。