Java 与x27之间的差异;类别<&燃气轮机';和';对象';作为方法的论据

Java 与x27之间的差异;类别<&燃气轮机';和';对象';作为方法的论据,java,Java,假设我想要一个方法,在我的应用程序中获取任何类型的对象,以验证它拥有的所有字段(每个对象具有不同类型的不同字段),并将其包装为消息。因此,方法输入参数将是任何对象的实例 现在我的问题是: 将此输入参数作为对象或类有什么区别 据我所知,?表示“任何类型或类”,“对象”在java中是一个超级类型 如果有人能向我解释在哪些情况下使用此选项更好,我将不胜感激: public validateAndConvertAnyObject(Object obj) { // compute and retu

假设我想要一个方法,在我的应用程序中获取任何类型的对象,以验证它拥有的所有字段(每个对象具有不同类型的不同字段),并将其包装为消息。因此,方法输入参数将是任何对象的实例

现在我的问题是: 将此输入参数作为
对象
有什么区别

据我所知,
表示“任何类型或类”,“对象”在java中是一个超级类型

如果有人能向我解释在哪些情况下使用此选项更好,我将不胜感激:

public validateAndConvertAnyObject(Object obj) {
    // compute and return a message
}
什么时候用这个更好

public validateAndConvertAnyObject(Class<?> obj) {
    // compute and return a message
}
public validateAndInvertanyObject(类obj){
//计算并返回消息
}

第一个方法可以用任何对象作为参数调用,例如
“foo”
42
Integer.class
。第二个类只接受类对象,例如
“foo”.getClass()
String.class

首先,您不在方法中指定返回类型。
无效。

其次,这两个参数完全不同。

public validateAndConvertAnyObject(Object obj)  
可以接受任何对象

public validateAndInvertanyObject(类obj)

可以接受任何课程

相当于

public validateAndConvertAnyObject(Object obj)  
使用通用的将是:

public <T> void validateAndConvertAnyObject(T obj){
你可以用它:

MyObject myObject = ...;
MyOtherClass myOtherClass = validateAndConvertAnyObject(myObject, MyOtherClass.class);
对象
对象
这将实例作为参数

Class
这将类作为参数

例子 对象可以等于
String
,对于类似的结果,您可以使
Class
等于
java.lang.String

混乱
从技术上讲,您可以将
Class
的实例作为
对象传递,这会增加混淆,这是使用
Class
的一个很好的理由,因为它可以防止实例和它的类混淆。

对象
实际上表示创建的对象的实例,例如:

String text = "Hello World!";
Object textAsObj = (Object) text;
虽然
Class
仅表示对象的类,但它与该类的实际实例没有关联:

Class<?> textClass = Class.forName("java.util.String");
下面是一个示例,您可以使用它访问给定
对象的字段

Person person = new Person("John Doe");
Class<Person> personClass = person.getClass();

Field nameField = personClass.getDeclaredField("name");
String name = (String) nameField.get(person);
Person-Person=新人(“约翰·多伊”);
Class personClass=person.getClass();
FieldNameField=personClass.getDeclaredField(“名称”);
String name=(String)nameField.get(person);

我不认为您实际上是自己编写代码来找出答案的@HosseinBoka如果用户回答了您的问题,请也接受他的回答()。如果没有,那么请说明还有什么问题没有回答,这是StackOverflow的一个关键部分,非常感谢。感谢所有试图提供帮助但我没有得到答案的人,我停止了发布,因为一些朋友没有考虑我的问题是关于这两种方法调用的用法,而不是关于差异。我用@Zabuza的方式标出了第一个答案
String text = "Hello World!";
Class<String> textClass = text.getClass();
Person person = new Person("John Doe");
Class<Person> personClass = person.getClass();

Field nameField = personClass.getDeclaredField("name");
String name = (String) nameField.get(person);