Java 如何调用另一个方法 class
Java how to call method in another class
很抱歉提出基本问题,但我正在学习,编程新手。我正在尝试调用另一个 class 中的方法,但如果不为 Cypher
class 的构造函数传递所需的值,我将无法调用。每次我在 Menu
class 中使用方法并想调用 Cypher
[的方法时,我真的需要 Cypher
class 的新实例吗=19=] 或者我如何重写以避免下面的内容。
public class Runner {
private static Cypher c;
public static void main(String[] args) {
Menu m = new Menu();
m.displayMenu();
//c=new Cypher(3,2);// wont work unless i add this line
c.displayCypher("text");
}
}
public class Cypher {
private int keyTotalRows;
private int keyStartRow;
public Cypher(int key, int offset) throws Exception {
}
public void displayCypher(String text) {
System.out.println("Plain text:" + text);
System.out.println("Key: Number of Rows:" + keyTotalRows + "\n" + "Key Start Row: " + keyStartRow);
}
}
public class Menu {
private Scanner s;
private void enterKey() {
s = new Scanner(System.in);
System.out.println("Enter key >");
int key = Integer.parseInt(s.next());
System.out.println("Enter offset >");
int offset = Integer.parseInt(s.next());
System.out.println(" Key:" + key + "\n" + " Offset:" + offset);
}
public static void displayMenu() {
System.out.println("Menu");
}
几件事:。您的方法是私有的,这意味着您不能在 class 之外调用它们。
更改它,您将能够创建您的对象并调用它们。
Menu menu=new Menu() ;
menu.otherMethod();
然而,当方法调用 c 时,它是 null,您将得到一个 null 异常。
您应该对其进行测试,然后调用对象 c 的内部方法
If (this.c! =null)
{c.displayOtherCypherType("" ) ;}
else
{//do something here}
为了能够从 class 外部发送 Cypher,请使用接收 Cypher 对象并将其分配给 c 的构造函数,或者使用 public set 方法接收并分配它
public setCypher(Cypher cypher)
{
(this.c=cypher) ;
}
现在如果你想调用 Cypher 方法而不实例化它,你可以在其中创建一个静态方法并调用 Tha 方法。
请注意它应该是 public 否则你将无法调用它
你在这里声明了一个Cypher类型的静态变量c
。所以你不能在没有对象声明的情况下使用 c
变量访问 Cypher class 方法。但是您可以从任何 class 调用 c
变量,因为它是一个静态变量。但是你的 Cypher class 没有任何静态方法,所以你不能在没有对象初始化的情况下调用这些方法。
所以你必须声明一个静态方法或者需要为来自Cypher的访问方法创建一个对象class.
但是如果你用初始化声明Cypher类型的静态变量。然后你可以从任何 class 调用 c ,也可以使用 c
变量引用调用 Chyper class 方法。喜欢:
// Declare this on Runner class
public static Cypher c = new Cypher();
// And then call from any class like
Runner.c.yourMethod();
编码愉快。
如果不想创建实例,可以将方法设为静态。
像这样:
public static void displayCypher(String text) {
System.out.println("Plain text:" + text);
System.out.println("Key: Number of Rows:" + keyTotalRows + "\n" + "Key Start Row: " + keyStartRow);
}
然后你可以在另一个class中调用这个函数,比如
Cypher.displayCypher()
很抱歉提出基本问题,但我正在学习,编程新手。我正在尝试调用另一个 class 中的方法,但如果不为 Cypher
class 的构造函数传递所需的值,我将无法调用。每次我在 Menu
class 中使用方法并想调用 Cypher
[的方法时,我真的需要 Cypher
class 的新实例吗=19=] 或者我如何重写以避免下面的内容。
public class Runner {
private static Cypher c;
public static void main(String[] args) {
Menu m = new Menu();
m.displayMenu();
//c=new Cypher(3,2);// wont work unless i add this line
c.displayCypher("text");
}
}
public class Cypher {
private int keyTotalRows;
private int keyStartRow;
public Cypher(int key, int offset) throws Exception {
}
public void displayCypher(String text) {
System.out.println("Plain text:" + text);
System.out.println("Key: Number of Rows:" + keyTotalRows + "\n" + "Key Start Row: " + keyStartRow);
}
}
public class Menu {
private Scanner s;
private void enterKey() {
s = new Scanner(System.in);
System.out.println("Enter key >");
int key = Integer.parseInt(s.next());
System.out.println("Enter offset >");
int offset = Integer.parseInt(s.next());
System.out.println(" Key:" + key + "\n" + " Offset:" + offset);
}
public static void displayMenu() {
System.out.println("Menu");
}
几件事:。您的方法是私有的,这意味着您不能在 class 之外调用它们。 更改它,您将能够创建您的对象并调用它们。
Menu menu=new Menu() ;
menu.otherMethod();
然而,当方法调用 c 时,它是 null,您将得到一个 null 异常。
您应该对其进行测试,然后调用对象 c 的内部方法
If (this.c! =null)
{c.displayOtherCypherType("" ) ;}
else
{//do something here}
为了能够从 class 外部发送 Cypher,请使用接收 Cypher 对象并将其分配给 c 的构造函数,或者使用 public set 方法接收并分配它
public setCypher(Cypher cypher)
{
(this.c=cypher) ;
}
现在如果你想调用 Cypher 方法而不实例化它,你可以在其中创建一个静态方法并调用 Tha 方法。 请注意它应该是 public 否则你将无法调用它
你在这里声明了一个Cypher类型的静态变量c
。所以你不能在没有对象声明的情况下使用 c
变量访问 Cypher class 方法。但是您可以从任何 class 调用 c
变量,因为它是一个静态变量。但是你的 Cypher class 没有任何静态方法,所以你不能在没有对象初始化的情况下调用这些方法。
所以你必须声明一个静态方法或者需要为来自Cypher的访问方法创建一个对象class.
但是如果你用初始化声明Cypher类型的静态变量。然后你可以从任何 class 调用 c ,也可以使用 c
变量引用调用 Chyper class 方法。喜欢:
// Declare this on Runner class
public static Cypher c = new Cypher();
// And then call from any class like
Runner.c.yourMethod();
编码愉快。
如果不想创建实例,可以将方法设为静态。
像这样:
public static void displayCypher(String text) {
System.out.println("Plain text:" + text);
System.out.println("Key: Number of Rows:" + keyTotalRows + "\n" + "Key Start Row: " + keyStartRow);
}
然后你可以在另一个class中调用这个函数,比如
Cypher.displayCypher()