-3

私は、本体を持つ次のクラスを持つ1つのJavaプロジェクトを作成しました。

package tfimvalidation;

public class ValidateToken {
    public void display()
    {
        System.out.println("Yor package imprort succesfully");
    }
}

これはJavaプロジェクトで、このプロジェクトのjarファイルを作成し、他の動的Webプロジェクトに追加しました。

次のステートメントで ValidateToken クラスとパッケージにアクセスできます

ValidateToken validateToken = new ValidateToken();

しかし、validateToken.display(); にアクセスできません。

このタイプのエラーが発生します。トークン「display」の構文エラーです。このトークンの後に識別子が必要です。

これは、最初のプロジェクトの jar を使用した 2 番目のプロジェクトのコードです。tfimvalidation.ValidateToken をインポートします。

public class Main
{
     ValidateToken validateToken=new ValidateToken();
    validateToken.display(); //Here gives above shown error.
}   
4

4 に答える 4

3

そのようなクラス宣言でメソッドを呼び出すことはできません。クラス宣言でフィールドを宣言できますが、メソッド呼び出し (フィールド初期化子に使用されるものを除く) はメソッドまたはコンストラクターで行う必要があります。例えば:

import tfimvalidation.ValidateToken;

public class Test {
    public static void main(String[] args) {
        ValidateToken token = new ValidateToken();
       token.display();
    }
}
于 2015-02-07T08:25:11.087 に答える
1

コンパイル時エラーが発生する理由は、メソッドまたはその他の内部ではなく、で呼び出しtoken.display(); ているためです。そんなことはできません。最小限の変更は次のとおりです。class bodycode block

ステートメントの下にシフト:

    ValidateToken token = new ValidateToken();
   token.display();

このようなメソッドに、

  public static void main(String[] args) {
        ValidateToken token = new ValidateToken();
       token.display();
    }

その他のオプション

1) 初期化ブロック

{
     ValidateToken token = new ValidateToken();
       token.display();
}

2) コンストラクター内

     Main(){
 ValidateToken token = new ValidateToken();
           token.display();

    }

3) 静的ブロック

        static {
 ValidateToken token = new ValidateToken();
           token.display();
         }

これらのステートメントをあなたのもの以外に置くときは、main method新しいオブジェクトを作成する必要がInit Block or Constructor will runあり、それが 内にある場合はstatic block、クラスがメモリにロードされるとすぐに呼び出されますが、オブジェクトを再利用してさらに処理することも必要だと思いますだから私はあなたの中にこれらの行を保持することをお勧めしますmain Method

于 2015-02-07T09:00:20.103 に答える
0

何をしているの

public class Main
{
     ValidateToken validateToken=new ValidateToken();
    ValidateToken.display(); //Here gives above shown error.
}   

あなたがすべきこと

 public class Main
    {
       //call this function from main
      public void function(){
         ValidateToken validateToken=new ValidateToken();
        validateToken.display(); // here v in lowercase
       }
    }   

最初に、クラス内で表示関数を呼び出していますが、Java で許可されていない Main クラス関数内では呼び出していません。次に、jar 内のメソッドは静的ではないため、オブジェクトを作成した後に呼び出す必要があります。

display(); を呼び出したい場合 クラス名付き do In you jar

public static void display()
    {
        System.out.println("Yor package imprort succesfully");
    }

jarの関数を呼び出したクラスで

ValidateToken.display();

注: パッケージもインポートします。

于 2015-02-07T08:32:44.680 に答える
0

次のようなフィールドを宣言するかのように呼び出すのではなく、メイン/その他のメソッドから void 型のメソッドを呼び出します。

public class Main
{
    public static void main(String args[]) {//main is the entry point
       ValidateToken validateToken=new ValidateToken();
       validateToken.display();
    }
}   

または

public class Main
{
    ValidateToken validateToken=new ValidateToken();
    public void myMethod() {
       validateToken.display();
    }
}   

または

public class Main
{
    ValidateToken validateToken;
    public Main() {
        validateToken=new ValidateToken();
        validateToken.display();
    }

}   

戻り値の型が int のメソッドであれば、次のようなことができます。

public class Main
{
    ValidateToken validateToken=new ValidateToken();
    int myint = validateToken.display();//then of course method name would been different
}   
于 2015-02-07T08:24:51.087 に答える