【发布时间】:2014-11-29 22:58:28
【问题描述】:
是否可以获取在 Java 中声明(但未实例化)的变量的类型? 例如:
public class Foo {
FooTwo foo2;
FooTwo foo3;
FooThree foo4;
public static void main(String[] args) {
if (foo2.getClass() == foo3.getClass()) {
System.out.println("foo2 is the same type as foo3");
}
if (foo3.getClass() == foo4.getClass()) {
System.out.println("foo3 is the same class as foo4");
}
}
}
有输出:
foo2 is the same type as foo3
显然getClass() 方法不适用于未实例化的变量,因此该代码不起作用。我假设我正在寻找的信息存储在变量(指针?)中的某个位置以确保类型安全,并且它可能是可访问的。 是否有可能实现这种比较?
原因: 我有一个带有几个声明变量的类。这些变量应该指向存储在另一个类的 ArrayList 中的对象。我正在尝试创建一个将初始化(但未实例化)变量作为参数的方法,扫描数组列表以查找与初始化变量的类型匹配的对象,并将变量设置为对象(使变量指向对象)。
另外:系统的重点是消除类的构造函数中的耦合。对象不能立即实例化,也不能在构造函数中实例化。
【问题讨论】:
-
这个的用例是什么?什么情况下不知道变量声明的类型?
-
查看您的术语。 实例化 是适用于类类型并产生实例的东西。变量不是实例。
-
我将编辑问题并添加一些上下文!你是对的,恐怕我的术语可能完全不符合标准:/我所指的正确术语是什么?
-
我只称它为空变量(或空字段,如果您想具体说明的话),我认为它是否设置为空或始终为空都没有关系。但是用例肯定会很好,因为我想不出在编译时它不明显的情况
-
你能添加类 FooTwo 和 FooThree 吗?