java里如何根据类名(String)返回类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里如何根据类名(String)返回类相关的知识,希望对你有一定的参考价值。

例如:正常写法:
(UserClass)list(0).getUserName
想实现:
String str = "UserClass";
(str.getClassByName())list(0).getUserName
这里有没有类似于getClassByName()这样的方法?

你说的根据一个字符串要得到一个类,在Java中只能使用反射机制了。反射机制很有趣的,猪名的框架spring就是大量用的反射。你可以百度Java反射机制,文章很多的。如果你不用反射技术,只能如下:

public Object getClassByName(String className)
if(className.equals("A"))
return new A();
else if(className.equals("B"))
return new B();

参考技术A

可以用反射实现,传入的参数是类的全限定名称

Class clz = Class.forName("java.lang.String");

参考技术B Class.forName("类路径")

这个方法返回的就是一个类
参考技术C 好像可以用反射 参考技术D 楼上说的有道理

C#反射执行方法返回List,怎么获取List

我有一系列按照一定规则命名的类,现在利用类名反射执行方法,其中一个方法返回的是List<类名>的list列表。但是反射方法返回的都是object,怎么把这个object转换为List。注:此处类名为string类型,不能找到对应的类。
问题已解决很久了,突然看见这个,把答案贴出来,有类似问题的可以参考一下。
foreach (object o in (IEnumerable)listModel)

//do something

参考技术A list datas= object as list; //一定要你对应的类型
if(datas!=null)

转换成功,可以用datas
追问

没有对应类型,类型是变化的

追答

不知类型,你怎么转,你再是变化的,但业务决定到某个时间点,也是必需有类型的。

那你只能一个个判断
list datas= object as List; //一定要你对应的类型
if(datas!=null)

转换成功,可以用datas


list datas= object as string; //一定要你对应的类型
if(datas!=null)

转换成功,可以用datas

....

追问

那我还用个屁的反射

参考技术B IEnumerable vvv = obj as IEnumerable;
用这个可以将反射返回的object转化成集合的方式。
然后就可以foreach这个东西了。本回答被提问者采纳

以上是关于java里如何根据类名(String)返回类的主要内容,如果未能解决你的问题,请参考以下文章

js为啥根据id就可以找到容器里的子元素,而根据类名就找不到?

怎么样使用java包里面提供的类?自己定义的类名可以和包中的类名一样吗?怎么知道使用了java包里面的类?

如何向Webservice里传递类参数

Java 如何找到全部类的类名

如何用Eclipse建立一个Java应用程序

C#反射执行方法返回List,怎么获取List