Java错误:即使.class文件都在同一目录中也找不到符号 [英] Java error : cannot find symbol even if the .class file are all in the same directory
问题描述
我定义了一个类TestoMessaggi和一个名为Messaggio的子类
i defined a class TestoMessaggi and a subclass called Messaggio
//esercizio 3.3 del libro
import javax.swing.JOptionPane;
public class TestoMessaggio {
private String code;
private String testo;
public TestoMessaggio(String c, String t) {
code = c;
testo = t;
}
public static TestoMessaggio creaTestoMessaggio() {
String co = JOptionPane.showInputDialog(null,"inserisci codice");
String te = JOptionPane.showInputDialog(null,"inserisci testo");
TestoMessaggio t1 = new TestoMessaggio(co,te);
return t1;
}
public String getCode() {
return code;
}
public String getTesto() {
return testo;
}
}
这里是Messaggio.class
Here is Messaggio.class
public class Messaggio extends TestoMessaggio {
private String mittente;
private String destinatario;
public Messaggio(String c, String t,String m, String d) {
super(c,t);
mittente = m;
destinatario = d;
}
public String getDestinatario() {
return destinatario;
}
public String getMittente() {
return mittente;
}
public void setDestinatario(String d) {
destinatario = d;
}
public static void stampaMessaggio(Messaggio m) {
System.out.println("code : "+m.getCode());
System.out.println("testo : "+m.getTesto());
System.out.println("destinatario : " +m.getDestinatario());
System.out.println("mittente : " +m.getMittente());
}
}
我创建了一个程序来测试两个类:这是代码
i created a program to test the two classes: here's the code
//esercizio 3.5 del libro
import javax.swing.JOptionPane;
public class Esempio3_5 {
public static String leggiNumero() {
String num = JOptionPane.showInputDialog(null,"inserisci numero");
return num;
}
public static void main(String[] args) {
String m = leggiNumero();
TestoMessaggio t1 = creaTestoMessaggio(); // non trova il metodo
String d = leggiNumero();
Messaggio mex = new Messaggio(null,null, m,d);
stampaMessaggio(mex); // nn trova il metodo
}
}
我收到此错误
Esempio3_5.java:16: error: cannot find symbol
TestoMessaggio t1 = creaTestoMessaggio(); // non trova il metodo
^
symbol: method creaTestoMessaggio()
location: class Esempio3_5
Esempio3_5.java:19: error: cannot find symbol
stampaMessaggio(mex); // nn trova il metodo
^
符号:method stampaMessaggio(Messaggio)
位置:Esempio3_5类
symbol: method stampaMessaggio(Messaggio) location: class Esempio3_5
所有3个文件位于同一目录中。有什么建议么?提前感谢
all 3 files are in the same directory. Any suggestions? Thanks in advance
推荐答案
您需要访问类名称的静态方法:
You need to access the static methods on the class name:
TestoMessaggio t1 = TestoMessaggio.creaTestoMessaggio();
您使用的代码:
The code that you used:
TestoMessaggio t1 = creaTestoMessaggio();
等效于:
TestoMessaggio t1 = Esempio3_5.creaTestoMessaggio();
因为您在 static
上下文。现在,显然你在 Esempio3_5
类中没有该方法,所以它失败。
since, you are using it in static
context. Now, clearly you don't have that method in Esempio3_5
class, so it fails.
同样,将另一行改为:
Messaggio.stampaMessaggio(mex);
但是,IMO应该覆盖 toString
方法 Messaggio
而不是提供静态stampaMessaggio()
方法。
But IMO, you should override toString
method in Messaggio
instead of providing a static stampaMessaggio()
method.
这篇关于Java错误:即使.class文件都在同一目录中也找不到符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!