Java 当实例化一个返回变量的方法时。。。?
基本上,我想确保我做得对。我在另一个类中调用这些方法。这些方法指定返回一个变量,所以在实例化它们时,我是否应该在括号中放置null?我只是想确定我做得对Java 当实例化一个返回变量的方法时。。。?,java,variables,methods,instantiation,Java,Variables,Methods,Instantiation,基本上,我想确保我做得对。我在另一个类中调用这些方法。这些方法指定返回一个变量,所以在实例化它们时,我是否应该在括号中放置null?我只是想确定我做得对 public class IntSLList { protected static IntSLLNode head, tail; public void createInst(){ new IntSLList().isEmpty(); new IntSLList().addToHead(null); new IntSL
public class IntSLList {
protected static IntSLLNode head, tail;
public void createInst(){
new IntSLList().isEmpty();
new IntSLList().addToHead(null);
new IntSLList().addToTail(null,null);
new IntSLList().deleteFromTail();
new IntSLList().printAll();
new IntSLList().isInList(null);
new IntSLList().delete(null);
}
public IntSLList() {
//code
}
public static boolean isEmpty() {
//code }
public static void addToHead(String AN) {
//code
}
public static void addToTail(String AN, Double AB) {
//code
}
public static String deleteFromHead() { // delete the head and return its info;
//code
}
public static String deleteFromTail() { // delete the tail and return its info;
//code
}
public static void printAll() {
//code
}
public static boolean isInList(String AN) {
//code
}
public static void delete(String AN){
//code
}}
提前谢谢大家 您根本不需要实例化方法,当您的列表被实例化时,它们已经“准备好使用” 您要做的是从方法中删除
static
关键字:这意味着这些方法是为整个类定义的“全局”方法,而不仅仅是为一个特定列表定义的
更新:这是我想象中的list类
import java.util.ArrayList;
public class IntSLList {
protected int head,tail;
//I'll use this as examplelist, so I can omit the list implementation
private ArrayList<Integer> dataList;
public IntSLList(){
//Do initalization
dataList = new ArrayList<>();
}
public void addToHead(int node){
dataList.add(0, node);
}
public void addToTail(int node){
dataList.add(node);
}
public boolean isEmpty(){
return dataList.isEmpty();
}
// ... snip other list methods here ...
}
createInst()
应该做什么?您确定希望字段和方法是静态的吗?另外,head和tail的默认值将为null。我不明白您想要实现什么。这里只有一个构造函数。其余的都是方法。它们是静态方法,因此应该在类上调用它们:IntSLList.isEmpty()
。作为参数传递的内容就是要作为参数传递的内容。如果要传递null,则传递null。如果你想传递其他东西,你就传递其他东西。你不“实例化”方法,你就调用它们。为什么要将null作为参数传递,除非它以对象(任何类型)作为参数,而您没有任何东西可以传递?@UberPwnd:这不是方法是静态的一个好理由。Java程序总是从运行main方法开始,该方法是静态的。根据您的推理,每个类的每个方法都是静态的,因为它是从main调用的,main是静态的。你真的需要阅读一本关于对象、方法和构造函数的Java教程。但是,当它们是从我的另一个类中非静态的时候,我不能调用它们,因为它是静态的。。。如果我试图从publicstaticvoidmain(String[]args)中删除static,它将不会运行。否则,我会使我的第一个类成为非静态的,这会在开始时为我省去很多麻烦……当然,head
和tail
这两个字段也需要是非静态的。您的static main()可以保持这种状态,如果您在main中使用上面的代码,那么它应该像expected@tannereil我知道你是从哪里来的,但是我在我单独的主类中遇到了问题,在我调用这些方法的方法中,这些方法是非静态的,我必须使用变通方法。调用这些时,我必须将它们设置为静态,以便访问它们:/我更新了我的答案,为您制作了一个更复杂的示例,以便您将其复制/改编到您的代码中。我找到了答案!!!:D愚蠢的我在我的银行类中没有这样做:IntSLList=newintsllist();然后用list.method()调用我的函数;
public class ListMain {
public static void main(String[] args){
IntSLList myList = new IntSLList();
myList.addToHead(1);
myList.addToTail(2);
System.out.println("myList.isEmpty() = " + myList.isEmpty());
}
}