Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 Object.class和x.getClass_Java - Fatal编程技术网

Java Object.class和x.getClass

Java Object.class和x.getClass,java,Java,我有这样一种方法: public Object load(Object type) { ... } 请注意,该参数是一种对象类型 我有几个类正在使用loadConfiguration方法。在方法内部,我需要知道类,因此需要MyObject.class的值。 因为我有一个对象,所以这是不可能的,type.getClass()也会抛出一个异常,因为它只给了我java.lang.Class,而不是真正的。 一种可能是使用instanceof功能,但我希望它尽可能通用 有什么想法吗?我也看了 谢谢大家

我有这样一种方法:

public Object load(Object type) {
...
}
请注意,该参数是一种对象类型

我有几个类正在使用loadConfiguration方法。在方法内部,我需要知道类,因此需要MyObject.class的值。 因为我有一个对象,所以这是不可能的,type.getClass()也会抛出一个异常,因为它只给了我java.lang.Class,而不是真正的。 一种可能是使用instanceof功能,但我希望它尽可能通用

有什么想法吗?我也看了


谢谢大家!

在你的例子中,我不确定到底发生了什么。我相信在您的示例中,参数
type
是一个类对象,因此您可以强制转换它

public Object load(Object type) {
Class<?> clazz = (Class<?>)type;
...
}
如果事实上您需要知道调用该方法的类型的类,那么只需调用

Class<?> clazz = this.getClass()
Class clazz=this.getClass()

您知道哪些类将调用
locad(objectobj)
?。。如果是的话,可以试试
instanceOf
。听起来你想要Java泛型,我的朋友。一个问题。为什么需要知道对象的类型?你在调用什么特定于对象的功能?@looser no-这就是你说的“参数是对象类型”的要点。但我仍然不确定你的对象类型代表什么。您可以保留load(type)并使用实际运行时对象调用它,在这种情况下,getClass()将返回该对象的运行时类型,或者将其替换为load(Class c)并稍微调用它different@user2252775如果您可以将任何随机对象传递给该方法,就不可能找到对象的类型。它只能通过泛型实现,如果您限制要传递的对象的类型,也可以通过泛型实现。
Class<?> clazz = this.getClass()