如何找到Java对象的结构?

| 我正在使用HttpExchange类,并且想要使用getAttribute函数来获取POST参数。如果我只是调用该函数并打印结果,它将起作用。但是必须有一些更好的方法来访问返回的对象并获取包含的数据。 该手册在这里:http://download.oracle.com/javase/6/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpExchange.html#getAttribute%28java.lang.String %29 如何访问对象?它有哪些方法?     
已邀请:
我对这个API不熟悉,但是看来HttpExchange.getAttribute不是您用来获取POST参数的方法。而是它是一种用于在过滤器链内共享信息的机制。由于您将实现过滤器,因此您将记录并理解可以存储的属性。 要阅读POST详细信息,您是否不执行HttpExchange.getRequestBody?     
使用Java反射。使用反射,您可以执行以下操作
 Class c = Class.forName(\"YourClassName\");
   Method m[] = c.getDeclaredMethods();
   for (int i = 0; i < m.length; i++)
   System.out.println(m[i].toString()); //iterate through these methods to find out data
    
HttpExchange返回给定属性名称的类型
Object
。假定尝试检索该属性的人知道属性的类型,并且可以将Object转换为适当的类。例如。 --
String attrValue = (String) httpExchangeObject.getAttribute(\"nameOfTheAttribute\");
您不需要在返回的对象上使用反射来查找结构。.我觉得简单的向下转换应该可以解决此问题。     
我也不熟悉此API。请求POST参数应该以
getResponseBody()
的原始,未经解析的形式可用。但是,如果您知道getAttribute方法将包含所需的数据,但是您不知道它将拥有哪个类(我不知道在不知道后者的情况下如何知道前者,但是无论如何),您可以使用反射来打印类的名称:
System.out.println (foo.getAttribute(\"name\").getClass ());
如果发现它是内部未记录的类,则可以使用更多的反射(或其他技术)来查看类层次结构,直到找到可以使用的公开记录的类或接口。 但这不是必需的,因为您的需求应记录在某处。     

要回复问题请先登录注册