
- 外文名
- CLASS
- 一般组词
- CLASSLESS CLASSFUL
- 释 义
- 网络工程中的一种协议
- 所属学科
- 网络工程
-
Java Class类简介
2011-01-22 17:48:00class类的实例表示java应用运行时的类(class ans enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现为一个class对象,可通过类名.class,类型.getClass(),Class.forName("类名")等方法...一,Class类有什么用?
Class类的实例表示java应用运行时的类(class and enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现为一个class对象,可通过类名.class, 类型.getClass(), Class.forName("类名")等方法获取class对象)。数组同样也被映射为为class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本类型boolean,byte,char,short,int,long,float,double和关键字void同样表现为 class 对象。
二,Class类的特征
Class类没有公有的构造方法,它由JVM自动调用(在new对象或者加载-classLoader时)。下面的方法作用是打印出对象的class name:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
同样可以根据class literal 获得class name:
System.out.println("The name of class Foo is: "+Foo.class.getName());//你可以将Foo改为void尝试下。
三,Class的主要方法
Class类的方法还是挺多的。主要是用于得到运行时类的相关信息(可用于反射)。重要的几个方法:
1, public static Class<?> forName(String className) :native 方法,动态加载类。非常重要。
如在sql中动态加载驱动程序:class.forName(sqlDriver);2,public T newInstance() :根据对象的class新建一个对象,用于反射。非常重要。
可用在反射中构建对象,调用对象方法:class doubleClass= class.forName("java.lang.Double");
Object objDouble = doubleClass.newInstance();
如在javaBean中就应用了这个方法,因为java默认要有一个无参构造函数。
3, public ClassLoader getClassLoader() :获得类的类加载器Bootstrap ,Extension ,System or user custom ClassLoader(一般为system classloader)。重要。
4,public String getName() :获取类或接口的名字。记住enum为类,annotation为接口。重要
5,public native Class getSuperclass():获取类的父类,继承了父类则返回父类,否则返回java.lang.Object。返回Object的父类为空-null。一般
6,public java.net.URL getResource(String name) :根据字符串获得资源。7,其他类
public boolean isEnum() :判断是否为枚举类型。
public native boolean isArray() :判断是否为数组类型。
public native boolean isPrimitive() :判断是否为基本类型。
public boolean isAnnotation() :判断是否为注解类型。
public Package getPackage() :反射中获得package,如java.lang.Object 的package为java.lang。public native int getModifiers() : 反射中获得修饰符,如public static void等 。
public Field getField(String name):反射中获得域成员。
public Field[] getFields() :获得域数组成员。
public Method[] getMethods() :获得方法。public Method getDeclaredMethod(String name, Class<?>... parameterTypes):加个Declared代表本类,继承,父类均不包括。
public Constructor<?>[] getConstructors() :获得所有的构造函数。
如此我们可以知道反射可以运行时动态获得类的所有信息,并新建对象(newInstance()方法)。
如我们定义一个类:
public class Test{ //Constructor public Test(){this("");} public Test(String name){} //Field public int id; public String name; //Method public void testMethod(){ } }
我们可以:Class c = Class.forName("Test"); Method m[] = c.getDeclaredMethods(); for (int i = 0; i < m.length; i++) System.out.println(m[i].toString());//输出testMethod } Constructor c[] = cls.getDeclaredConstructors(); for (int i = 0; i < c.length; i++) { Constructor ct = c[i]; System.out.println("name = " + ct.getName());//输出两个构造函数信息
没时间写了,别人用电脑了。。。。
-
Class<T> 泛型获取T的class
2020-03-05 15:28:10getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type 然后将其转换ParameterizedType。 getActualTypeArguments()返回表示此类型实际类型参数的 Type ...getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type
然后将其转换ParameterizedType。
getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。
[0]就是这个数组中第一个了。
简而言之就是获得超类的泛型参数的实际类型。public class GenericDAO<T> { private Class<T> entityClass; protected GenericDAO() { Type type = getClass().getGenericSuperclass(); Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0]; this.entityClass = (Class<T>) trueType; } }
子类
public class OptionManager extends GenericDAO<MSGC_OPTION> { }
测试类
public class OracleTest { public static void main(String[] args) throws Exception { OptionManager manager = new OptionManager(); } }
这样在你new OptionManager();以后超类里的entityClass就是子类那里的public class OptionManager extends GenericDAO<MSGC_OPTION> 里面的MSGC_OPTION所对应的class对象了…
-
python中class的定义及使用
2019-06-05 13:38:44#类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。 #对象:它是类的实例化。 #方法:类中定义的函数。 #类(Class) 由3个部分构成: ''' 类的名称:类名 类的属性...#类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。 #对象:它是类的实例化。 #方法:类中定义的函数。 #类(Class) 由3个部分构成: ''' 类的名称:类名 类的属性:指对象的特征(一组数据) 类的方法:允许对象进行操作的方法 (行为/功能) ''' # Python 3.x中取消了经典类,默认都是新式类。 # 新式类的语法 -> class 类名(object): pass # 类对象支持两种操作:属性引用 和 实例化。 # 属性引用的语法:obj.属性 # 类实例化的语法:obj = 类名() # 类中方法的调用:obj.方法名() # 下面分析新式类的2种常见形式: #例1: #自定义一个类student class student(object): def speak(self): ## 哪个对象调用了这个方法,self就是那个对象;可以把self理解为一个形参 print("%s 说:我今年%s岁" % (self.name, self.age)) #类student 实例化一个对象john john = student() # 给对象添加属性 john.name = "约翰" john.age = 19 # 调用类中的 speak()方法 john.speak() #<<<约翰 说:我今年19岁 #例2: class student(object): # 定义构造方法 def __init__(self, n, a): #__init__() 是类的初始化方法;它在类的实例化操作后 会自动调用,不需要手动调用; # 设置属性 self.name = n self.age = a # 定义普通方法 def speak(self): print("%s 说:我今年%s岁" % (self.name, self.age)) #类student 实例化一个对象john john = student("约翰",19) # 调用类中的 speak()方法 john.speak() #>>>约翰 说:我今年19岁 # 在python中使用__开头 并以__结尾的方法,称之为魔法方法; # __init__(self) 是类的初始化方法,也称构造方法,是一种特殊的魔法方法。 # __init__(self)在实例化后,会自动调用,而不用手动调用,所以一般把属性设置在_init__()里。 # 常用到的魔法方法还有:__str__(self) 、 __del__(self)等。 ## __str__(self) class student(object): # 定义构造方法 def __init__(self, n, a): # 设置属性 self.name = n self.age = a # 输出一个字符串(追踪对象属性信息变化) def __str__(self): # __str__(self)不可以添加参数(形参) return "名字:%s 年龄:%d" % (self.name, self.age) # 实例化一个对象john john = student("约翰",19) # 当使用print输出对象时,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据 print(john) #>>>名字:约翰 年龄:19
-
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb
2017-05-04 08:55:40异常错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `...异常错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
这个问题 是在我整合项目过程中出现的,用了最新的mysql 连接驱动
以前版本的jdbc.properties
jdbc.driverClass = com.mysql.dbc.Driver jdbc.url = jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT jdbc.username = root jdbc.password = root123
现在按照最新官方提示支持将com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver
jdbc.driverClass = com.mysql.cj.jdbc.Driver jdbc.url = jdbc:mysql://127.0.0.1:3306/db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT jdbc.username = root jdbc.password = root123
如上情况不能解决君的问题,请耐心自行搜索解决!同时也希望此贴能够帮助各位!
-
kotlin 中::class 、class.java、javaClass、javaClass.kotlin区别
2020-04-05 15:37:55class Person { var name: String = "" var age: Int = 0 companion object { } } java类 public class Man { } 要知道获取的到底是什么,可以利用andorid stuido的类型提示,一目了然。 .... -
深入理解Java类型信息(Class对象)与反射机制
2017-05-01 23:19:19【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) ...深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解 -
public class和class的区别
2019-03-21 21:38:50在编写类的时候可以使用两种方式定义类:public class定义类和class定义类,那么这这两种方式有什么区别吗?如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致,如果类的声明使用... -
Raw use of parameterized class ‘Result
2019-12-31 11:26:11Raw use of parameterized class Raw use of parameterized class 'Result' 原始使用参数化类 Reports any uses of parameterized classes where the type parameters are omitted. Such raw uses of ... -
详解Class和MetaClass
2018-08-30 14:42:10想必对象大家都清楚(不是恋爱对象哦~),那么Class又是什么?这中文意思大家都是知道是“类”,可为什么偏偏就有这么一个结构体叫Class?Objective-C Runtime里面有个api: id objc_getMetaClass(const char *name),... -
原生js—classList.add()、classList.remove()、classList.contains()、classList.toggle()、
2019-02-21 19:28:53classList.add(); 添加新的类名,如已经存在,取消添加 classList.contains(); 确定元素中是否包含指定的类名,返回值为true 、false; classList.remove(); 移除已经存在的类名; classList.toggle(); ... -
springboot 关于 Class path contains multiple SLF4J bindings.警告的解决
2018-07-12 08:49:32springboot 关于 Class path contains multiple SLF4J bindings.警告的解决 有一次配置好springboot项目启动后,忽然发现有下边的警告: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found... -
一文理解class.getClassLoader().getResourceAsStream(file)和class.getResourceAsStream(file)区别
2018-11-07 01:19:47基础理解 都是实现获取在classpath路径下的资源文件的输入流。 为什么是classpath而不是src,因为当web...这个目录下放的一般是web项目运行时的class文件、资源文件(xml,properties...); 另外,在使用spring... -
JVM进阶(十八)——初识Class文件
2017-03-13 15:54:10JVM进阶(十八)——初识Class文件 关于类加载机制的相关知识在前面的博文中暂时先讲那么多。中间留下了很多问题,从本篇博文开始,我们来一一解决。 从我们最陌生而又最熟悉的.class文件开始说起。.class文件... -
js增加class或者删除class
2017-12-13 19:45:58var classVal = document.getElementById("id").getAttribute("class"); //删除的话 classVal = classVal.replace("someClassName",""); document.getElementById("id").setAttribute("class",classVa -
ES6中的类(Class)
2020-11-29 20:22:21ES6中的类(Class)类的基本语法constructor方法this与class(原型)属性与方法添加到this上属性与方法添加到类上类的静态成员 类的基本语法 ES6提供了更接近面向对象(注意:javascript本质上是基于对象的语言)... -
Android AGP 3.6.3 迁移4.0.0问题 No such property: variantConfiguration for class
2020-06-29 18:32:46No such property: variantConfiguration for class: com.android.build.gradle.internal.variant.ApplicationVariantData 查看module build.gralde applicationVariants.all 配置没有问题,那可能就是第三方gradle... -
真正解决方案:Cannot resolve class or package 'mysql’
2018-09-03 20:49:28当使用Spring Boot 2.0 整合MySQL的时候配置可能会出现这个故障 spring.datasource.driver-class-name= ... Cannot resolve class or package ‘jdbc’ less… (Ctrl+F1) Inspection info: Checks Spring Boo... -
JAVA中类的public class与class的区别详解
2017-05-10 11:48:20为了控制某个类的访问权限,修饰词必须出现在关键字class之前。例如:public class Student {} 在编写类的时候可以使用两种方式定义类: (A)public class定义类 (B)class定义类 2.public class定义类 ... -
Java中Class对象详解
2018-06-01 14:50:40从某种意义上来说,java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。它包含了与类有关的信息。其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RT... -
Scala class和case class的区别
2017-07-26 17:33:28在Scala中存在case class,它其实就是一个普通的class。但是它又和普通的class略有区别,如下: 1、初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new; scala> case class ... -
jquery判断.class是否存在,添加.class,移除.class
2019-02-14 16:02:56一、 判断.class是否存在 is(‘.classname’)的方法 $('div').is('.redColor'); 二、添加.class $('div').addClass("redColor"); 三、删除.class $('div').removeClass("redColor"... -
Scala之Case Class
2016-03-17 15:11:46Case Class的特别之处在于: 编译器会为Case Class自动生成以下方法: equals & hashCode toString copy 编译器会为Case Class自动生成伴生对象 编译器会为伴生对象自动生成以下方法apply unapply 这意味着你可以... -
es6 class类与class类中constructor
2019-02-20 16:00:43在es6 中的class关键字用于声明类,在此之前js一直没有类的概念,本文只要讨论class的与es5中对象的关系以及class中constructor的作用 关键字class ES6 的class可以看作只是一个语法糖,而类本身可以看作一个构造函数... -
Invalid action class configuration that references an unknown class named [XX]
2013-01-10 10:13:52问题描述: 今天新写了一个小功能,调试的时候提示找不到action ...2.Invalid action class configuration that references an unknown class named [adminLogQueryAction] org/apache/catalina/loader/WebappClassLoa -
在 Java 的反射中,Class.forName 和 ClassLoader 的区别
2019-06-05 20:47:21在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流... -
关于BeautifulSoup写class和class_
2017-09-04 16:37:42因为class是python的关键字,所以在写过滤的时候,应该是这样写:soup.find_all('a',class_='xxx') soup.select(a[class='xxx'])这里总结出一条,凡是写在[ ]里面的都是class,外面的class_ -
Java之public class和class声明区别
2018-07-11 21:58:071、public class定义类和class定义类时: 如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。 如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候,... -
014-JVM-Class文件结构概况
2020-12-20 14:38:51我们写了一个HelloWorld.java,然后通过javac编译出一个HelloWorld.class文件,那么这些类似的class文件中都存有那些东西呢? 下面给出答案: 1. Class文件结构概况 下图有点模糊,可以直接访问查看源脑图: ... -
IntelliJ IDEA :decompiled.class file bytecode version:52.0(java 8) ,open source file.
2016-10-19 11:48:15decompiled.class file bytecode version:52.0(java 8) , open source file. 翻译一下上面的意思:(反编译 .class文件中的字节码 到Java 8 版本) 打开源文件 其实这个时候,你就得注意一下,你看到...
-
day2-运算符和变量作业
-
Redis和Jedis简介以及Redis事物
-
【2021】UI自动化测试框架(Selenium3)
-
Redis数据库入门与使用
-
富文本编辑器处理过的字符串部分字符正则捕获不到,含有不可见字符\u200B
-
【JUC学习】——Lock和Synchronized使用
-
转行做IT-第2章 HTML入门及高级应用
-
转行做IT-第5章 流程控制语句
-
flutter插件调用APP页面、使用原生aar,framework库
-
2021-01-20
-
湖南城市学院《WEB应用与开发》模拟试卷.pdf
-
第3章 入门程序、常量、变量
-
Springboot要被淘汰了吗?又该如何自学呢?
-
《计算机文化基础》期末复习题库.pdf
-
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
ClearCanvas开源PACS系统C# -v13.2(含引用资源包).zip
-
海南大学《数据结构与算法设计》考试试题(含答案).pdf
-
gVim知识收集(低频使用)
-
集美大学2012-2016《概率论与数理统计》期末考试试卷.pdf
-
Java算法题目小记3:勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形.已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。 求满足这个条件的不同直角三角形的个数。