久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

在JAVA中如何取得一個(gè)變量的類型?

 IT民工收藏 2014-01-06
自己寫了個(gè)工具類,,大家給點(diǎn)意見:可以查看類的詳細(xì)信息的,。
package mycom;

import java.lang.reflect.*;

/**
 * the tools of looking for the properties of a class
 * print the constructor and method
 * 
 * @author Roy
 * @since 2007-09-10
 * @version 1.0
 */
public class GetProperties {
/**
 * return the parameters of the specified methods,constructors or fields fit
 * the jdk1.4
 * 
 * @param acceObject AccessibleObject
 * @return
 * @author Roy
 */
private static String getParameter(AccessibleObject acceObject) {
String result = "";
Class[] parameters = null;
if (acceObject instanceof Method) {
parameters = ((Method) acceObject).getParameterTypes();
}
if (acceObject instanceof Constructor) {
parameters = ((Constructor) acceObject).getParameterTypes();
}
int paramCount = parameters.length;
// if no parameters
if (paramCount < 1) {
return result;
}
StringBuffer str = new StringBuffer();

for (int i = 0; i < paramCount; i++) {
String s = parameters[i].getName();// generally,the s is contain

str.append(getShortName(s)).append(",");
}
if (str.length() > 1)//delete the last ","
result = str.substring(0, str.length() - 1);

return result;
}
/**
 * print the field
 * @param object Class
 */
public static void printFields(Class object){
System.out
.println("----------------------Fileds----------------------");
StringBuffer str = new StringBuffer();
Field[] field = object.getDeclaredFields();

for(int i=0;i<field.length; i++){
int type =field[i].getModifiers(); 
str.append(Modifier.toString(type)).append(" ");

Class declared =field[i].getType(); 
str.append(getShortName(declared.getName())).append(" ");
str.append(field[i].getName()).append("\n");
//str.append(field[i].get(field.[i]).toString()).append("\n");

//System.out.println(field[i].toString());

}
System.out.print(str.toString());
}

/**
 * print the construct function and its parameters
 * 
 * @param object Class
 * @return
 */
public static void printConstructs(Class object) {
System.out
.println("----------------------Constructors----------------------");

Constructor[] cos = object.getConstructors();
for (int i = 0; i < cos.length; i++) {
System.out.print(cos[i].getName() + "(");
System.out.print(getParameter(cos[i]));
System.out.print(")" + "\n");

}
}

/**
 * print the declared method and its parameter
 * 
 * @param object Class
 */
public static void printMethods(Class object) {
System.out
.println("----------------------Methods----------------------");
StringBuffer str = new StringBuffer();
Method[] methods = object.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
int type = methods[i].getModifiers();// Returns the Java language
// modifiers
// The Modifier class should be used to decode the modifiers
if(type != 0)
str.append(Modifier.toString(type)).append(" ");

str.append(getShortName(methods[i].getReturnType().getName()))
.append(" ");
str.append(methods[i].getName()).append("(").append(
getParameter(methods[i]));
str.append(")").append("\n");

}
System.out.println(str);
}

/**
 * if the return type is a array,the str is "[*", for example the
 * function" int[] getNumber(){..}" the
 * "methods[i].getReturnType().getName()" equals "[I"
 * 
 * @param str String
 */
private static String getShortName(String str) {

StringBuffer result = new StringBuffer();
int i = -50;
if (str.indexOf("[") != -1) {//array type
if (str.length() == 2) {
switch (str.charAt(1)) {
case 'B':
result.append("byte[]");
break;
case 'S':
result.append("short[]");
break;
case 'I':
result.append("int[]");
break;
case 'C':
result.append("char[]");
break;
case 'J':
result.append("long[]");
break;
case 'F':
result.append("float[]");
break;
case 'D':
result.append("double[]");
break;
}
} else {
if ((i = str.lastIndexOf(".")) != -1) {//because the end of the str is ";"
result.append(str.substring(i + 1,str.length()-1)).append("[]");
}
}
} else {//no array type
if ((i = str.lastIndexOf(".")) != -1) {
return str.substring(i + 1);
}
return str;
}
return result.toString();
}

public static void main(String[] args) throws Exception {
if(args.length<1){
StringBuffer str=new StringBuffer();
str.append("usage:java GetProperties ARGS").append("\n");
str.append("      the args contain the package:").append("\n");
str.append("   example: java GetProperties java.lang.String");
System.out.println(str.toString());
System.exit(0);
}

//test:
//Class object = Class.forName("java.lang.reflect.Modifier");

Class object = Class.forName(args[0]);
printFields(object);
printConstructs(object);
printMethods(object);
}
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多