Java JDK Class
来源:互联网 发布:gif在线截取软件 编辑:程序博客网 时间:2024/05/17 22:17
我们都知道在Java的世界里,一切皆对象都是类。那么类又是什么类型?所有Class就是所有类的类型,而Class本身也是一个类。而Class的类类型也是Class。这样也形成了一个完成的循环,大一统。
1、Class简介
类类的实例表示在运行Java应用程序的类和接口.enum是一种class,annotation是一种interface.每个Array同样属于一个class.Java中的原始类型(boolean, byte, char, short, int, long, float和double)和void关键字同样代表Class对象。
Class没有public类型的构造器。在Java虚拟机加载或者ClassLoader调用defineClass的时候会自动构造Class对象。
下面的例子用Class对象来打印一个对象的类名。
void printClassName(Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }
还可以使用一个类文字得到一个命名的类对象类型.例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());
2、Class方法及说明
3、常用方法
package com.spring.framework.carl.user.service;import org.junit.Test;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import static org.hamcrest.MatcherAssert.assertThat;import static org.hamcrest.core.Is.is;public class ClassTest { /** * 加载类 * @throws ClassNotFoundException */ @Test public void testForName() throws ClassNotFoundException { Class<?> integerClazz = Class.forName("java.lang.Integer"); String integerName = integerClazz.getSimpleName(); assertThat("Integer", is(integerName)); } /** * 是否接口 */ @Test public void testIsInterface(){ boolean isInterface = Map.class.isInterface(); assertThat(true, is(isInterface)); isInterface = HashMap.class.isInterface(); assertThat(false, is(isInterface)); } /** * 获取方法 * @throws NoSuchMethodException */ @Test public void testMethod() throws NoSuchMethodException { Method intValue = Integer.class.getMethod("parseInt", String.class); assertThat("parseInt", is(intValue.getName())); } /** * 创建实例 * @throws IllegalAccessException * @throws InstantiationException */ @Test public void testNewInstance() throws IllegalAccessException, InstantiationException { Map map = HashMap.class.newInstance(); map.put(1, "carl"); assertThat("carl", is(map.get(1))); } /** * same class or super class or super interface */ @Test public void testIsAssignableFrom(){ boolean assignableFrom = Object.class.isAssignableFrom(ArrayList.class); assertThat(true, is(assignableFrom)); assignableFrom = List.class.isAssignableFrom(ArrayList.class); assertThat(true, is(assignableFrom)); assignableFrom = ArrayList.class.isAssignableFrom(ArrayList.class); assertThat(true, is(assignableFrom)); } /** * 是否指定类的实例 */ @Test public void testIsInstance(){ ArrayList arrayList = new ArrayList(); assertThat(true, is(ArrayList.class.isInstance(arrayList))); assertThat(true, is(List.class.isInstance(arrayList))); } /** * 是否是原始类型 */ @Test public void test(){ boolean isPrimitive = int.class.isPrimitive(); assertThat(true, is(isPrimitive)); isPrimitive = Integer.class.isPrimitive(); assertThat(false, is(isPrimitive)); }}
4、特殊方法
包括静态方法与可变参数方法两种。
public class ClazzTest { @Test public void testInvokeStaticMethod() throws Exception{ // e.g. 1 Class clazz = ClazzTest.class; Method staticMethod = clazz.getDeclaredMethod("staticMethod"); Object result = staticMethod.invoke(clazz.newInstance()); assertThat("invoke static method fail","invoke static method".equals(result)); // e.g 2 result = staticMethod.invoke(null); assertThat("invoke static method fail","invoke static method".equals(result)); } @Test public void testInvokeVariableParam() throws Exception{ Class clazz = ClazzTest.class; Method variableParamMethod = clazz.getDeclaredMethod("variableParamMethod", int[].class); // variableParamMethod.invoke(null, 1, 2, 3, 4) ERROR Object result = variableParamMethod.invoke(null, new int[]{1, 2, 3 , 4 ,5}); assertThat("invoke variable Param method fail",result.equals(15)); } public static String staticMethod(){ return "invoke static method"; } public static Integer variableParamMethod(int ... params){ int result = 0; for (int param : params) { result += param; } return result; }}
0 0
- Java JDK Class
- java-.class文档与JDK版本问题
- Java class文件的JDK编译版本号
- Java class文件的JDK编译版本号
- jdk--Class
- JAVA类文件版本(class version)与JDK对应关系
- Java Class编译时使用的JDK版本查看
- 怎么知道Java class文件JDK编译的版本号
- java -查看编译当前class的JDK版本
- .class文件JDK版本
- java jdk安装 环境变量配置 cmd 命令行 编译java文件 运行.class文件 CLASSPATH配置
- java jdk安装 环境变量配置 cmd 命令行 编译java文件 运行.class文件 CLASSPATH配置
- JDK Class 版本识别表
- 使用JDK打包class文件
- 读取CLASS文件JDK版本
- JDK Class 版本识别表
- class文件JDK版本查看
- jdk打包class为 jar
- Robust scale-adaptivemean-shift for tracking
- 一幅图弄清DFT与DTFT,DFS的关系
- 高德地图 轨迹纠偏 找不到MATraceManager.h文件
- Linux下的进程管理
- DPlist
- Java JDK Class
- Java泛型<T> t类与方法
- codeforces 512A (拓扑排序)
- current_page_item 不显示,首页链接不调用current_page_item原因
- python随机数模块random
- 85. Maximal Rectangle
- i18n拦截器源代码详解
- 全国天气预报数据接口调用PHP示例
- 后台默默的劳动者,探究服务