2017-09-01 33 views
-2

我有2个班的IntelliJ中的java文件夹(我的意思是两个不同的文件):如何调用比较另一个类(包)中的两个字符串的方法?

Main.classFields.class

Fields.class我只是想保存所有我测试我的应用程序(姓名,电话等)的字段。例如:

String a1 = "Tom"; 
String b1 = "James"; 

Main.class我写的代码,并试图调用一些方法。例如,我想写从Fields.classсompares2字符串的方法。我在这里的结果:

public class Main { 
public static void main(String[] args) { 

    String var1; 
    String var2; 

    class equalsM { 
      void equalsMethod(String a1, String b2) { 
      if (a1.equals(b1)) System.out.println("OK"); 
      else System.out.println("Bad"); 
     } 
    } 

我想一次写一个方法,并调用该方法,每次我需要它..

我的问题:我不知道我可以调用方法equalsMethod主的.class与这些字符串从比较Fields.class

我读赫伯特·希的书,还是不明白一些基本...

+0

您的equalsMethod方法不是主类的方法。这是在Main类的main方法内定义的本地内部类equalsM的一种方法。直接在Main类中定义方法。使它成为静态的,因为它是一个纯粹的实用程序方法,不需要访问任何Main实例的状态。将它公开也是公开的,所以它在任何地方都可见,并可以使用Main.equalsM(...)在任何地方调用它。这是任何介绍性Java书籍或Java教程所涵盖的基本内容。在提问之前阅读。 https://docs.oracle.com/javase/tutorial/java/javaOO/index.html –

+0

谢谢,但我想在Main.java.This从Fields.java使用数据并没有解决我的问题 – Kos

+0

如果它不”解决问题,那就意味着你做错了什么。但你没有发布你的尝试,所以不可能说什么。你不可能在如此短的时间内阅读和消化我链接到的Java教程。所以退后一步,阅读。小心。 –

回答

0

调用方法取决于其状态。有两种方法:实例和类方法。实例方法只能用实例调用,而类方法可以在类上调用(实例化或不实例化)。

首先。

当你定义:

class equalsM { 
    void equalsMethod(String a1, String b2) { 
     if (a1.equals(b1)) System.out.println("OK"); 
     else System.out.println("Bad"); 
    } 
} 

你定义一个类的实例方法equalsMethod。要调用它,你需要实例化类:

equalsM i = new equalsM(); 
i.equalsMethod("foo","bar"); 

这可能不是你所期望的,因为instanciating这样一类的,它们的行为像一个函数东西是不necssary。你可能需要一个静态方法,如:

其中
class equalsM { 
    static void equalsMethod(String a1, String b2) { 
     if (a1.equals(b1)) System.out.println("OK"); 
     else System.out.println("Bad"); 
    } 
} 

情况下调用它可能仅仅是:

equalsM.equalsMethod("foo","bar"); 

二。

不要使用内部类来满足这种需求,请在外部定义equalsM类并按建议使用它。

三。

按照许多惯例的建议拼写你的类:EqualsM(首字母大写)。

正如评论,你的设计是非常糟糕的,我建议你阅读关于基本的面向对象。

+0

当我写:静态无效equalsMethod(字符串A1,B1字符串){ 如果(a1.equals(B1))的System.out.println( “OK”); else System.out.println(“Bad”); }我得到错误。无法解析符号a1,b1 – Kos

+0

谢谢。但是我怎么能从我的Main.java项目中的Fields.java用户数据?我如何调用我的方法并使用Fields.java中的数据?不可能? – Kos

+0

我们没有任何类字段的代码。 –

0

如果你没有必要界定内部类,那么你可以使用静态方法来执行你的代码,或者您可以使用上面他人建议的例子。

public class Main { 

    public static void main(String[] args) { 

     Fields field = new Fields(); 

     String var1 = field.a1; 
     String var2 = field.b1; 
     equalsMethod(var1,var2); 
    } 

    private static void equalsMethod(String var1, String var2) { 
     if (var1.equals(var2)) { 
      System.out.println("OK"); 
     } 
     else { 
      System.out.println("Bad"); 
     } 
    } 
}