对于一个类项目,我试图从另一个类访问一个方法,但是我的代码给出了错误“非静态方法printArrayList()不能从静态上下文中引用。”我是java的初学者,所以任何帮助都表示赞赏。 我把代码简化了一下。
这是第一堂课:
public class classOne
{
private classTwo[] arrayList;
public void printArray()
{
classTwo.printArrayList();
}
}
第二个:
public class classTwo
{
public void printArrayList()
{
System.out.println(arrayList);
}
}
答案 0 :(得分:1)
cassTwo被定义为一个数组。您可以从classTwo Object
中获取printArrayList()
方法
您可以按以下方式更改代码:
public class classOne
{
private classTwo arrayList; //You have to initialize this object before you use
public void printArray()
{
arrayList.printArrayList();
}
}
答案 1 :(得分:1)
这是您可以访问非静态类的方法。
classTwo list= new classTwo();
list.printarraylist();
答案 2 :(得分:0)
在java中,非静态方法只能从包含类的实例调用或通过包含类的实例调用。创建包含类的实例并通过它调用该方法。此外,您需要从其他类访问该数组。为此,您必须将其作为参数传递,或者使其他类嵌套或子类。无论哪种方式,您还必须构建数组,以便打印除null
:
使用参数:
public class classOne
{
private classTwo[] arrayList = {...}; //Make sure to construct it!
public void printArray()
{
//Create a new instance of classTwo
new classTwo().printArrayList(arrayList);
}
}
public class classTwo
{
public void printArrayList(classTwo[] arrayList) //Accept parameters
{
System.out.println(arrayList);
}
}
使用嵌套:
public class classOne
{
private classTwo[] arrayList = {...}; //Make sure to construct it!
public void printArray()
{
//Create a new instance of classTwo
new classTwo().printArrayList();
}
public class classTwo //Nested inside of classOne
{
public void printArrayList()
{
System.out.println(arrayList);
}
}
}
答案 3 :(得分:0)
基本上,一个静态的'是一个可以被不同的类访问的...将它放在公共之后,以便它可以在类之间传输。
public class classOne
{
public static classTwo[] arrayList;
public static void printArray()
{
classTwo.printArrayList();
}
}
public class classTwo
{
public satic void printArrayList()
{
System.out.println(arrayList);
}
}
答案 4 :(得分:0)
解决方案1:
public class classTwo
{
// add static
public static void printArrayList()
{
System.out.println(arrayList);
}
}
将非静态方法printArrayList()设置为静态方法public static void printArrayList()
解决方案2:
classTwo.printArrayList();
致new classTwo().printArrayList();
无法从静态上下文(classTwo)引用非静态方法printArrayList(),因此您可以使用new classTwo()
。
答案 5 :(得分:0)
在这一行classTwo.printArrayList(); printArrayList不是静态方法,因此您无法从classTwo访问。您必须创建对象然后访问该方法。
public class classOne
{
private classTwo[] arrayList;
public void printArray()
{
classTwo obj2 = new classTwo();
obj2.printArrayList();
}
}
或使printArrayList()方法静态
public class classTwo
{
public static void printArrayList()
{
System.out.println(arrayList);
}
}
然后以
的形式访问它 classTwo.printArrayList();
答案 6 :(得分:0)
在第一堂课中创建第二堂课的对象
public class classOne
{
private classTwo[] arrayList;
public void printArray()
{
classTwo obj = new classTwo();
obj.printArrayList();
}
}
但是你的第一堂课中仍然有一个私人阵列,并且你试图在第二堂课中访问它,而这是不允许的。此外,您不能将数组命名为“arraylist”,因为这是一个java关键字。尝试对你的头等舱进行修正......
static classTwo [] arr;
但正确的方法是将数组列表放在classTwo中并保持私有,然后创建一个构造函数来构造对象以保存该arrayList然后通过该方法访问它...让我知道如果你想了解更多相关信息。
答案 7 :(得分:0)
我看到一个问题的7个答案只是调用另一个类的方法,让我也写一下 -
Method method = classTwo.getDeclaredMethod("printArrayList");
method.invoke(classTwo.newInstance());
答案 8 :(得分:0)
将Method修饰符更改为static,并在该父类名称
的帮助下将该方法访问另一个类eg.classname.staticmethodname();