永发信息网

java反射问题,获取对象属于哪个类型?

答案:5  悬赏:20  手机版
解决时间 2021-04-15 12:54
  • 提问者网友:轻浮
  • 2021-04-15 08:52

public static void saveTable(Object obj, int sid){}

传进来的obj对象可能是Student类型,或者是Teacher类型,

要怎么用反射获取它的类型是Studnet或者是Teacher?

而且要用反射出来的类型创建一个对象?

新手求助..

最佳答案
  • 五星知识达人网友:猎心人
  • 2021-04-15 09:54

反射出来的是Class对象,要调用newInstance()方法可以返回Object超类对象。相应类型要进行强制类型转换.

全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-04-15 13:43
obj.getClass().newInstance();
  • 2楼网友:冷風如刀
  • 2021-04-15 12:54
public static void test(Object obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{ Class cls=obj.getClass();//获取对应的Class类 Constructor [] cons=cls.getConstructors();//可以获取此类中所有的构造方法 for(Constructor a : cons){ //可以获取所有构造方法的参数 Class []params = a.getParameterTypes(); for( Class t : params){ System.out.println(t.getName()); } } //也可以通过查找的方式获取构造方法 Constructor con=cls.getConstructor(String.class); //可以通过构造方法实例化对象,参数为构造方法需要的参数 Object objIns=con.newInstance("abc"); //或者也可以调用默认的构造方法构造对象 cls.newInstance(); System.out.println("通过反射机制实例化的对象:"+objIns); }
  • 3楼网友:傲气稳了全场
  • 2021-04-15 11:58

import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException;

public class Reflect { public void myReflection(){ try { Class c = Class.forName("反射类路径"); //加载反射类 Constructor constructor = c.getConstructor(); //获取构造器 Object object = constructor.newInstance(); //调用无参的构造方法 创建实例 //判断object属于哪种类型 转换 if(object instanceof Student){ Student stu = (Student)object; }else{ Teacher teacher = (Teacher)object; } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }

  • 4楼网友:渊鱼
  • 2021-04-15 10:58
判断类型一般都不用反射, 用这个 instance of if(obj instance of Student){ .....(" is Student"); } else if(obj instance of Teacher){ .....(" is Teacher"); } else{ ...("other"); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯