‘壹’ java 怎么得到一个对象的class
java.util.Date date=new java.util.Date();
Class clazz=date.getClass();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
‘贰’ JAVA 获取class对象 类名.class Class.forName()两种方法什么情况下使用 为什么
.class 是获得当前对象的句柄。 class.forName()用于反射,java虚拟机通过class.forName(class 名) 寻找到 名字为class 的 类文件装载进 虚拟机。 object ob=clsss.forName("class 名").instences(); 相当于实例化一个对象
‘叁’ java怎么通过class获得一个对象
在class里面直接定义一个对象。
先定义一个类 ,可以用类来NEW 一个对象比如 public class A { private a; public b; }接着就可以创建一个对象 语法为 类名 对象名 = new 类名()则为 A b =new A();
‘肆’ 获得Class类对象的几种方法
每一个class都有一个Class对象。一个java文件经过编译,再生成的.class文件中,就会创建一个Class对象。只有一个。他表示整个类的类型信息。
那么通常我们创建对象的方式又有几种呢?
五种:
1.通过new
语句创建对象。
2.通过静态工厂方法创建,比如A.getNewInstance();
3.通过反射技术来实现。可以调用Class类或Constructor类的newInstance()方法。
4.通过调用对象的clone()方法
5.利用I/O流技术的反序列化来实现。
回归正题获取Class对象(实例)有三种方法:
1.通过class的方式创建Class实例:类名.class
2.通过对象的getClass()方法获得。
3.通过Class类的forName()方法来获得。
反射:可以说是一中技术手段,利用反射可以访问,检测,修改本身行为状态的一种方式。利用反射我们可以创建实例。
其实质就是:反编译:.class---反编译成.java文件。
所以说他是一个强大的工具,他可以创建更加灵活的代码,在运行期装配。使我们可以在运行期,动态的访问对象有哪些方法,动态,并可以为修改对象的属性,在运行期动态的访问任何对象的任何方法。
而且他降低了代码的耦合度,提高了可扩展性。
但是反射使用不当会成本很高。而且反射本身比直接硬编码更加复杂,所以一般性小程序尽量不要用,他适合一些对灵活度和可扩展性比较强的框架中。
而且他会模糊程序结构,不利于理解程序流程。可维护性不好。
‘伍’ java 怎么获取t的class
1. public Type getGenericSuperclass()
用来返回表示当前Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果这个直接超类是参数化类型的,则返回的Type对象必须明确反映在源代码中声明时使用的类型。比如:
import java.lang.reflect.ParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
System.out.println(((ParameterizedType)new GT1().getClass().getGenericSuperclass()));
}
}
则输出结果即为:
GT2<java.lang.Integer>
如果此Class代表的是Object 类、接口、基本类型或 void,则返回 null。。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。
2. public Type[] getGenericInterfaces()
与上面那个方法类似,只不过Java的类可以实现多个接口,所以返回的Type必须用数组来存储。
以上两个方法返回的都是Type对象或数组,在我们的这个话题中,Class都是代表的参数化类型,因此可以将Type对象Cast成ParameterizedType对象。而 ParameterizedType对象有一个方法, getActualTypeArguments()。
public Type[] getActualTypeArguments()
用来返回一个Type对象数组,这个数组代表着这个Type声明中实际使用的类型。接着使用上面的例子:
import java.lang.reflect.ParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
System.out.println(((ParameterizedType)new GT1().getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
}
}
‘陆’ java怎么通过class获得一个对象
所有的java类都继承自object,那数组也不例外。就是说一个数组本身就是一个class,你得到这个数组的class对象后,可以把它转型为数组。
‘柒’ Java面试题:获得一个类的类对象有哪些方式
给你介绍3种获得类对象方式:
第一种方式:通过类本身来获得对象
Classclassname=this.getClass();
第二种方式:通过子类的实例获取父类对象
ClassNamecn=newClassName();
UserClass=cn.getClass();
ClassSubUserClass=UserClass.getSuperclass();
第三种方式:通过类名加.class获取对象
ClassForClass=**.**.ClassName.class;(类在包中的路径加.class)
第四种方式:通过类名的字符串获取对象
ClassForName=Class.forName("**.**.ClassName");
这种方式在jdbc中常用到。
‘捌’ JAVA 获取class对象 类名.class Class.forName()两种方法什么情况下使用 为什么
Class.forName()是根据类名称加载类 比如有一个类名为com.abc.AAA 此处Class.forName(‘com.abc.AAA ’).newInstance()就会创建一个AAA对象而.class一般用来获取类的通用属性 比如AAA.class.getDeclareMethod()是获取AAA类的所有声明的方法 主要用于反射机制