我在方法中声明了两个形参,来自于用户的输入以及系统的。因为这个方法是在内部调用,然后在软件最下方的状态栏中输出提示信息,所以如果出错的话,要很直观的告诉用户和开发者,你在什么地方输入的什么值或者参数有问题。
我看了一下文档,java中的反射能解决一个类中属性的类型以及名字问题。如果要获取的对象是像我刚才提到的形参(可能是基本数值String、int、short、boolean啥的,也可能是Vector、JList对象),比如方法1这样声明:
private void swapData(Vector v1,Vector v2)
{
...
}以及以下这些情况:
private void compare(String s1,String s2)
{
...
}private void compare(int src,int target)
{
...
}private void compare(InputData data1,InputData data2)
{
...
}我怎么才能获得传入的形参的名称(就是v1、v2、s1、s2、src、target、data1、data2这些东西)和类型呢?(Vector、String、int、InputData)
我看了一下文档,java中的反射能解决一个类中属性的类型以及名字问题。如果要获取的对象是像我刚才提到的形参(可能是基本数值String、int、short、boolean啥的,也可能是Vector、JList对象),比如方法1这样声明:
private void swapData(Vector v1,Vector v2)
{
...
}以及以下这些情况:
private void compare(String s1,String s2)
{
...
}private void compare(int src,int target)
{
...
}private void compare(InputData data1,InputData data2)
{
...
}我怎么才能获得传入的形参的名称(就是v1、v2、s1、s2、src、target、data1、data2这些东西)和类型呢?(Vector、String、int、InputData)
public static void main(String args[]) {
//String var = "123";
int var = -120;
//TODO:判断数据类型
Object param = var;
if (param instanceof Integer) {
int value = ((Integer) param).intValue();
System.out.println("var ls Integer!");
System.out.println("var ls value ==" + value);
} else if (param instanceof String) {
String s = (String) param;
System.out.println("var ls String!");
System.out.println("var ls value ==" + s);
} else if (param instanceof Double) {
double d = ((Double) param).doubleValue();
System.out.println("var ls double!");
System.out.println("var ls value ==" + d);
} else if (param instanceof Float) {
float f = ((Float) param).floatValue();
System.out.println("var ls float!");
System.out.println("var ls value ==" + f);
} else if (param instanceof Long) {
long l = ((Long) param).longValue();
System.out.println("var ls long!");
System.out.println("var ls value ==" + l);
} else if (param instanceof Boolean) {
boolean b = ((Boolean) param).booleanValue();
System.out.println("var ls boolean!");
System.out.println("var ls value ==" + b);
} else if (param instanceof Date) {
Date d = (Date) param;
System.out.println("var ls Date!");
System.out.println("var ls value ==" + d);
} //以上代码为获得Object的类型
}
但是对于方法的参数(局部变量),据我说知java标准API中
没有相应的类。
要把局部变量的名字弄到类文件中好像只能通过javac -g 来编译了,但不知道如何读出来。