java中一个 类.class 发法 获取的描述类的对象,是 否 可以找到其 所有的子类 的名称

java中一个 类.class 发法 获取的描述类的对象,是 否 可以找到其 所有的子类 的名称,第1张

下面是能判断是否指定类的子类。但是要想全部查询。

这个不太可能吧。

Class c = ArrayListclass;

cisPrimitive(); //判断c是否为基本数据类型

cisAssignableFrom(Listclass); //判断c是否是List类的子类或父类

cgetGenericType(); //得到泛型类型

不过呢。你可以看看 eclipse 中的实现。就是你点击一个类。然后按 F4 就能从 "Type Hierarchy"。就能看到所有子类了。你可以搜搜看。

你的Jsp编译错误了,你没有在jsp中import你的Demo1类,你直接就调用了,所以报错了,请加上这一句。

<%page import="包名(如果有)Demo1"%>

TgetClass()或者Tclass都是非法的,因为T是泛型变量。

由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型。

有一种变通的实现方式:

import javalangreflectArray;

import javalangreflectParameterizedType;

import javalangreflectType;

public class Generic extends Base<String> {

public static void main(String[] args) {

Generic c = new Generic();

Systemoutprintln(carray);

}

Object array ;

public Generic() {

array = ArraynewInstance(getGenericType(0), 100);

}

}

class Base<T> {

public Class getGenericType(int index) {

Type genType = getClass()getGenericSuperclass();

if (!(genType instanceof ParameterizedType)) {

return Objectclass;

}

Type[] params = ((ParameterizedType) genType)getActualTypeArguments();

if (index >= paramslength || index < 0) {

throw new RuntimeException("Index outof bounds");

}

if (!(params[index] instanceof Class)) {

return Objectclass;

}

return (Class) params[index];

}

}

其中Base<T>是泛型类,在父类中声明getGenericType,子类继承具体的Base<String>,那么在子类中就可以通过getGenericType(0)获取到String的class

局部变量

在方法

栈帧

中根本

没有名字

,只有

偏移地址

。变量名是给程序员看的。

如果你了解了这点,你就知道你的要求是从原理上不可能实现的。

当然,你可以封装一个类:

class

MyArray

{

private

String

name;

public

double[]

array;

public

MyArray(String

name,

double[]

array){

thisname

=

name;

thisarray

=

array;

}

public

String

toString()

{

return

thisname

+

"的内容是:"

+

thisarray;

}

}

然后输出这个类的对象

MyArray

a

=

new

MyArray("array1",

new

double[]{01,

02,

03});

Systemoutprint(a);

不知道你说的“普通的java类”是什么。在spring里要注入的话,相应的类都要纳入spring的管理,对象由spring创建,对象从spring获取。就像你上面的BaseDaoImpl和BaseServiceImpl。

如果UserCarManager也是由spring管理的话,那同样适用@autowired就可以注入。

看你的提问,应该是指没有纳入spring管理的类如何注入spring管理的对象,这种情况可以用srping相关的静态方法达到目的。

比如:

WebApplicationContext webAppContext = WebApplicationContextUtilsgetWebApplicationContext(getServletContext());

BaseDaoImpl baseDao = (BaseDaoImpl) BeanFactoryUtilsbeanOfTypeIncludingAncestors(webAppContext, BaseDaoImplclass);

以上就是关于java中一个 类.class 发法 获取的描述类的对象,是 否 可以找到其 所有的子类 的名称全部的内容,包括:java中一个 类.class 发法 获取的描述类的对象,是 否 可以找到其 所有的子类 的名称、java el获取对象属性错误、在java中,使用泛型,比如说T,但是T.class就要报错。我想获取T的class对象怎样获取啊。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9703436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存