我需要创建一个myStack类然后用它来测试Palindromes ...我选择创建一个基于ArrayList的堆栈实现。
import java.util.ArrayList;
public class myStack<AnyType>{
private ArrayList<AnyType> arr;
public myStack(ArrayList<AnyType> a){
arr = a;
}
public void push(AnyType element) {
arr.add(element);
}
public AnyType pop() {
if(arr.size() == 0)
{
System.out.println("Stack Underflow");
return null;
}
else
{
AnyType element = arr.get(arr.size() -1);
arr.remove(element);
return element;
}
}
public AnyType top() {
if(arr.size() == 0)
{
System.out.println("Stack Underflow");
return null;
}
else
return(arr.get(arr.size() -1));
}
}
然后我在名为Palindrome的课程中使用它(尚未完成)
然而,当我编译时,它告诉我 “注意:Palindrome.java使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:取消选中以获取详细信息。“
当我注释掉myStack m = new myStack(test);
这一行时它编译,所以我知道这是问题...为什么myStack类会成为问题?是否与我在堆栈类中使用的“AnyType”有关?
答案 0 :(得分:1)
你的班级myStack
。是通用的模板类型<AnyType>
,目前正在使用Raw Type(因此警告)。请遵循Java命名约定,并将其重命名为MyStack
。然后,将它与类型一起使用(在Java 7及以上diamond operator <>
中) -
// myStack m = new myStack(test);
myStack<Character> m = new myStack<>(); // <-- Please use MyStack.
答案 1 :(得分:0)
如果您打算将MyStack类用于任何类型,可以使用通配符“?”。
所以你的MyStack将是无界的通配符类通用类,因此可以保留任何内容。
答案 2 :(得分:0)
我添加一点视角......不直接回答问题..
恕我直言...... Java非常广泛,您需要有意识地推迟像Generics这样的学习内容。 专注于这些:
我会建议你的程序结构:
快乐的编码!