Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中,如何将类名作为参数传递给函数?_Java_Android - Fatal编程技术网

Java 在android中,如何将类名作为参数传递给函数?

Java 在android中,如何将类名作为参数传递给函数?,java,android,Java,Android,在我的android应用程序中,我有两个类,比如X和Y。我有另一个类Z,在这个类中我有一个静态函数“print”。这个函数应该从X和Y两个类调用,我想在从这两个类调用print函数时,将X和Y的类名作为参数传递给函数“print”。我尝试的是 public class X { public static String os="Android"; String classname="X"; Z.print(classname); } public class Y { p

在我的android应用程序中,我有两个类,比如X和Y。我有另一个类Z,在这个类中我有一个静态函数“print”。这个函数应该从X和Y两个类调用,我想在从这两个类调用print函数时,将X和Y的类名作为参数传递给函数“print”。我尝试的是

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无法解析或不是字段”。我知道我用来传递类名的方法是错误的。有人能指导我解决这个问题吗?…提前感谢

print
方法中,
classname
参数是一个普通的Java字符串。它没有名为
os
的字段

如果要将类名和操作系统名都传递给
print
方法,则需要使
print
接受两个字符串参数:

public static void print(String classname, String os)
{
  System.out.println(classname + ", " + os);
}
并在调用时传递这两个值:

Z.print(classname, os);

您的另一个错误是您的
X
Y
类在方法之外有代码,这是不允许的。

您可以调用类的getName方法

YourClass.class.getName();
在您的情况下,当您调用Z类的print方法时,调用方式如下:

Z.print(Y.class.getName());

为什么不直接将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);

  }

}

Z.print()compile@zaske,我认为编译错误是问题的关键。我已经尝试过这种方法……但是eclipse仍然无法检测到字符串“os”,那么您需要发布修改后的代码和收到的错误消息。您发布的代码已经有多个语法错误,在编译器接受之前,您需要修复所有语法错误。