0

X と Y には別のクラス Z があり、そのクラス内には静的関数 'print' があります。この関数は、X と Y の両方のクラスから呼び出す必要があり、クラス名を渡したいと考えています。両方のクラスから印刷関数を呼び出すときに、関数「印刷」へのパラメーターとして X と Y を使用します。私が試したのは、

public class X
 {
  public static String os="Android";
  String classname="X";
  Z.print(classname);
 }

public class Y
  {
   public static String os="IOS";
   String classname="Y";
   Z.print(classname);
  }

public class Z
  {

     public static void print(String classname)

      {

       System.out.println(classname.os);

      }
  }

しかし、Eclipse は「os を解決できないか、フィールドではありません」というエラーをスローします。

4

4 に答える 4

2

クラスの getName メソッドを呼び出すことができます。

YourClass.class.getName();

あなたの場合、Z クラスの print メソッドを呼び出すときは、次のように呼び出します。

Z.print(Y.class.getName());
于 2012-11-14T06:56:47.823 に答える
0

パラメータとして os を直接渡さないのはなぜですか?

class X
 {
  public static String os="Android";
  String classname="X";
  void print()
  {
    Z.print(os);
}
}

class Y
  {
   public static String os="IOS";
   String classname="Y";
   void print()
{
    Z.print(os);
}
}

class Z
  {

 public static void print(String x)

  {

   System.out.println(x);

  }

}
于 2012-11-14T07:41:12.213 に答える
0

Z.print()をメソッド本体に移動します。

于 2012-11-14T07:45:13.630 に答える
0

In your print method, the classname argument is an ordinary Java string. It doesn't have a field called os.

If you want to pass both the class name and OS name to the print method, you'll need to make print take two string arguments:

public static void print(String classname, String os)
{
  System.out.println(classname + ", " + os);
}

and pass both values when calling the it:

Z.print(classname, os);

Your other error is that your X and Y classes have code outside a method, which isn't allowed.

于 2012-11-14T05:25:06.567 に答える