【问题标题】:Declare package Class through variable - java通过变量声明包类 - java
【发布时间】:2012-08-27 09:24:30
【问题描述】:

我已经创建了 2 个包含类的包

pakage1.class.files
  |- ClassA;
  |- ClassB;

pakage2.class.files
  |- ClassC;

但我想调用代码如下

public class ClassC
{
    public void method1()
    {
        pakage1.class.files.ClassA var1 = new pakage1.class.files.ClassA();
    }
}

但我想将“pakage1.class.files.ClassA”作为变量传递

public class ClassC
{
    public string CL1 = "pakage1.class.files.ClassA";

    public void method1()
    {
        CL1 var1 = new CL1();
    }
}

请帮助我...

【问题讨论】:

    标签: java methods package


    【解决方案1】:

    不,你不能这样做。变量类型必须在编译时知道。

    你可以使用:

    Class<?> clazz = Class.forName(className);
    Object object = clazz.newInstance();
    

    ...但是当然你必须使用反射来获取任何成员。你不会有一个那种类型的变量

    编辑:当然,您不需要在代码中的任何地方都有完全限定的名称。您可以为此使用import 语句:

    // Please don't include "class" as part of your package name...
    import package1.class.files.ClassA;
    
    public class ClassC {
        public void method1() {
            ClassA var1 = new ClassA();
        }
    }
    

    ...当然,这不是一回事...但无论如何它可能会对您有所帮助。

    【讨论】:

    • 谢谢乔恩,但我不明白你的意思,请你把它简单点。 (我是java新手)
    • @user1629372:我已经尽可能简单了,真的。你不能做你想做的事。您没有向我们提供任何信息说明您想要这样做的原因,因此很难提供任何进一步的建议...
    【解决方案2】:
    CL1 var1 = new CL1(); 
    

    这是java中的错误。 CL1 是变量的标识符,而不是数据类型,因此在创建变量时不能使用 CL1 作为类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2011-10-20
      • 2012-06-06
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      相关资源
      最近更新 更多