2017-09-01 8 views
-2

私はIntelliJの中のjavaフォルダに2クラス(私が意味する2つの異なるファイル)を持っています私のアプリケーション(名前、姓、電話など)でテストするすべてのフィールド。たとえば:別のクラス(パッケージ)の2つの文字列を比較するメソッドを呼び出す方法は?</p> <p><strong>Main.class</strong>と <strong>Fields.class</strong></p> <p><strong>でFields.class私は保存したい</strong>:

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

Main.class iは、コードを書いて、いくつかのメソッドを呼び出すようにしようとしています。例えば、私はFields.classから2つの文字列を§コンパイルするメソッドを書いています。ここに私の結果:

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でFields.javaのデータを使用したいのですが、これは私の問題を解決しません。 – Kos

+0

それは '問題を解決すると、何か間違ったことを意味します。しかし、あなたはあなたの試みを投稿しなかったので、何を言うのも不可能です。このような短期間にリンクしたJavaチュートリアルを読んだり消化したりすることはできません。だから一歩踏み出して読んでください。慎重に –

答えて

0

メソッドを呼び出す方法は、その状態によって異なります。メソッドには、インスタンスメソッドとクラスメソッドの2種類があります。インスタンスメソッドはインスタンスでのみ呼び出すことができますが、クラスメソッドはクラスに対して呼び出すことができます(インスタンス化されているかどうか)。

最初。

ユーザーが定義:

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

あなたはインスタンスメソッドequalsMethodを持つクラスを定義します。あなたは、クラスをインスタンス化する必要があり、それを呼び出すには:関数はnecssaryないように振る舞う何かのために、このようなクラスをinstanciatingので

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

それはあなたが期待するものでしょうではありません。

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クラスを外部に定義し、それを推奨するように使用してください。

第3。

多くの慣習で示唆されているように、クラスを綴る:EqualsM(最初の文字は大文字)。

あなたのデザインは非常に悪いので、基本的なOOPについてお読みください。

+0

私は次のように書く:static void equalsMethod(String a1、String b1){ if(a1.equals(b1))System.out.println( "OK"); else System.out.println( "Bad"); }エラーが発生しています。シンボルa1、b1を解決できません – Kos

+0

ありがとうございます。しかし、私のMain.javaプロジェクトのFields.javaのユーザーデータはどのようにすることができますか? Fields.javaのメソッドを呼び出してデータを使用するにはどうしたらいいですか?それは不可能だ? – Kos

+0

クラス 'Fields'にはコードがありません。 –

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"); 
     } 
    } 
} 
関連する問題

 関連する問題