【问题标题】:Convert a String into a class?将字符串转换为类?
【发布时间】:2026-02-05 09:25:02
【问题描述】:

我有一个名为theClass 的字符串。它包含一个字符串.class。我想将该字符串放入我意图的第二个参数中;我知道这是不可能的,但我怎样才能在一个意图中使用我的字符串,它是一个类?

例如,如果 String theClass 是:

String theClass = "anotherClassInMyProj.class";

我不能这样做:

Intent i = new Intent(this, theClass);

那我将如何使用字符串作为一个类呢?我是否需要以某种方式对其进行转换,是否有内置方法可以做到这一点?

【问题讨论】:

  • 类似this
  • 您可以有将className 作为字符串的意图。使用intent.setClassName(packageContext, className),其中className 是一个字符串。

标签: java android class android-intent


【解决方案1】:

试试这个:

    String className = "com.example.anotherClassInMyProj";
    Intent startfunction = new Intent();
    startfunction.setClassName(getPackageName().toString(), classname);
    startActivity(startfunction);

【讨论】:

  • 为什么className有com.example
  • 类名和包(完全限定类名)
【解决方案2】:

你需要使用:

String theClass = "anotherClassInMyProj.class"
Class c=Class.forName(theClass);

【讨论】:

  • Class.forName 会起作用吗? theClass到底有.class
  • 我们为什么要做 Class.forName?另外,类似于 OAD 的问题, c 对象是否在末尾包含一个 .class ?或者我们是否必须删除 String theClass 中的 .class 才能使其工作?回答完这些问题后,我会标记这个最佳答案并点击“赞”按钮。非常感谢!
【解决方案3】:
Intent i= new Intent(this,Class.forName(theClass);

【讨论】:

  • Class.forName 会起作用吗? theClass到底有.class? forName 需要限定名称。
  • 你需要删除.class,你可以使用正则表达式,你必须处理classnotfound异常。
  • 正是我想说的,在你的答案中添加这个。
  • @OAD 所以基本上,如果我从 String theClass 中取出 .class,它会起作用吗?如果是这样,forName 方法的作用是什么,我们为什么要放置 Class。而不是.Class?抱歉所有问题,但这是一个非常有趣的话题。回答完这些问题后,我会标记这个最佳答案并点击“赞”按钮。非常感谢!