
import JavaioBufferedReader;
import javaioInputStreamReader;
import javalangreflectMethod;
import javalangreflectModifier;
public class test {
public static void main(String[] args) throws Exception {
// BufferedReader bb=new BufferedReader(new InputStreamReader(Systemin));
// String classname=bbreadLine();
Class c=ClassforName("ArrayListTestjava");
//-------------------获取方法的详细信息
Method m[]=cgetDeclaredMethods();
for(int i=0;i<mlength;i++)
{
//--------------------获得方法的名字
Systemoutprintln("方法的名字是:"+m[i]getName());
//--------------------获得方法参数的类型和有几个参数
Class b[]=m[i]getParameterTypes();//获得所有的参数并且存放到数组B中
for(int j=0;j<blength;j++)
{
Systemoutprintln("参数的类型是"+b[j]);
}
//--------------------获得方法返回值的类型
Systemoutprintln(m[i]getReturnType());//获得方法的返回值类型
//--------------------获得方法的修饰符
int mod=m[i]getModifiers();
Systemoutprintln("方法的修饰符有"+ModifiertoString(mod));
//--------------------获得方法的异常类型
Class e[]=m[i]getExceptionTypes();//获得所有的异常类型存放到数组e中
for(int k=0;k<elength;k++)
{
Systemoutprintln("方法的异常类型是:"+e[k]);
}
Systemoutprintln("-------------------------------------------------------------------");
}
//----------------------------获得属性的详细信息
}
}
package Class //测试comtctestClass的forname方法获得属性信息;
import javalangreflectField;
import javalangreflectModifier;
public class test {
public static void main(String[] args) throws ClassNotFoundException {
Class c=ClassforName("Class测试comtctestClass的forname方法获得属性信息student");//把要使用的类加载到内存中,并且把有关这个类的所有信息都存放到对象c中
Field f[]=cgetDeclaredFields();//把属性的信息提取出来,并且存放到field类的对象中,因为每个field的对象只能存放一个属性的信息所以要用数组去接收
for(int i=0;i<flength;i++)
{
Systemoutprintln("属性的名称是:"+f[i]getName());//获得属性的名字
Systemoutprintln("属性的类型是:"+f[i]getType());//获得属性的类型
int mod=f[i]getModifiers();//获得修饰符的常量总和
Systemoutprintln(mod);
Systemoutprintln("属性的修饰符有:"+ModifiertoString(mod));//modifier类可以根据常量总和去计算到底有哪些修饰符
Systemoutprintln("-------------------------------------------------------");
}
}
}
Java中要用到反射,首先就必须要获取到对应的class对象,在Java中有三种方法获取类对应的class对象。 1、通过类的class属性 2、通过类实例的getClass()方法获取
java是不支持在运行中进行强制转化的! 如果事先知道类型,可以通过强制转化实现! 如果不知道! 可以采用这种方式!
String className = objgetClass()getName(); 得到类名
然后:
A a = (A)ClassforName(className)newInstance();
//上面这句话的意思是,forName(className):静态加载className这个类;
// newInstance(),实例化一个对象
// A 代表你知道的这人类或者这个类的父类, 把强制转化成你所要的对象。
这和你
A a = new A();
是一样的效果!
用SystemcurrentTimeMillis()方法来实现 。
代码如下:
javasqlDate currentDate = new javasqlDate(SystemcurrentTimeMillis());说明:
返回long类型,一般用于获取某个方法或其它的执行时间差,在开始前获取一次,在结束时获取一次,结束时间减去开始时间,得到执行时间。
先获取Method对象
以下仅供参考
package comkiddtestzhidao;import javalangreflectMethod;
/
Hello world!
/
public class Main {
public static void main(String[] args) {
Method method1 = null;
Method method2 = null;
try {
method1 = ClassforName("comkiddtestzhidaoCat")getMethod("getName", (Class<>[]) null);
method2 = ClassforName("comkiddtestzhidaoCat")getMethod("getChilds", (Class<>[]) null);
} catch (NoSuchMethodException ex) {
exprintStackTrace();
} catch (SecurityException ex) {
exprintStackTrace();
} catch (ClassNotFoundException ex) {
exprintStackTrace();
}
if (null != method1) {
Systemoutprintln(method1getGenericReturnType()getTypeName());
}
if (null != method2) {
Systemoutprintln(method2getGenericReturnType()getTypeName());
}
}
}
class Cat {
private String name;
private Cat[] childs;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public Cat[] getChilds() {
return childs;
}
public void setChilds(Cat[] childs) {
thischilds = childs;
}
}
复制下面代码:
class Test{
public static void main(String[] args){
int i=1; //int类型变量
Systemoutprintln(getType(i)); //打印变量类型为int
}
public static String getType(Object o){ //获取变量类型方法
return ogetClass()toString(); //使用int类型的getClass()方法
}
}
扩展资料:
java8种基本数据类型 (4种整型+2种浮点型+1种字符型+1种逻辑型)
4种整型:
byte-1 字节:-128~127 ;
short -2 字节:-32768~32767 ;
int-4 字节:-2^31~2^31-1;
long-8 字节:-2^63~2^63-11234。
2种浮点型
float-4 字节-32位IEEE 754单精度(有效位数6~7位);
double-8 字节-64位IEEE 754双精度(有效位数15位)。
1种字符型
char-2 字节-整个Unicode字符集。
1种逻辑型
boolean-1 字节-true或者false。
以上就是关于java 什么方法可以看类的类型全部的内容,包括:java 什么方法可以看类的类型、java反射调用怎样获得原来的类型、java 如何通过对象获取对象类全名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)