Java错误:即使.class文件都在同一目录中也找不到符号 [英] Java error : cannot find symbol even if the .class file are all in the same directory

查看:922
本文介绍了Java错误:即使.class文件都在同一目录中也找不到符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我定义了一个类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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆