class

Cython 教程(4):cdef class 与 class cdef class。 阅读详情

当我们编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象

class类的实例表示java应用运行时的类(class ans 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) :natice 方法,动态加载类。非常重要。
       如在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());//输出两个构造函数信息


Java-Class<?> 结合反射是非常有用的,尤其是在你需要处理不确定类型的类信息时。当你不知道具体的类型时,可以使用 Class<?> 时,你无法访问到具体的类型信息,因为类型信息在编译时被擦除了。如果你需要处理具体类型的 Class 对象,你应该使用带具体类型的 Class<T>。> 时,你无法访问到具体的类型信息,因为类型信息在编译时被擦除了。如果你需要处理具体类型的 Class 对象,你应该使用带具体类型的 Class<T>。如果你需要处理具体类型的 Class 对象,你应该使用带具体类型的 Class<T>。 阅读详情

相关推荐

使用 ArcGIS Pro 和 Google Earth Engine 可视化地表温度

在这项研究中,利用 Landsat 热数据通过各种方法检查了 2013 年和 2023 年恰纳卡莱省的地表温度变化。使用了 NDVI、大气层顶部、亮度温度、植被比例和地表温度等公式。研究结果表明,从热图像中获得的数据,特别是地表温度(LST),是土地解释的重要资源。恰纳卡莱 — 土耳其(土耳其)使用 ArcGIS 程序和 Google Earth Engine 对不同季节的卫星图像进行分析。

gis收藏家的博客 1996

T和Class<T>以及Class<?>的理解

首先看下Class类 ,普通的非泛型类Class。 注意:class是java的关键字, 在声明java类时使用; Class类的实例表示Java应用运行时的类(class ans enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现为一个Class对象,可通过类名.class,类型.getClass(),Class.forName("类名

WiteWater的博客 3万+

强化学习-----DQN(Deep Q-network)

DQN(Deep Q-Network)是一种基于深度学习和强化学习的算法,由DeepMind提出,用于解决离散动作空间下的马尔科夫决策过程(MDP)问题。它是首个成功将深度学习应用于解决强化学习任务的算法之一。DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。那什么是Q-leaning?可以看上一篇文章Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。

qq_74722169的博客 2万+

Class<?>和Class的区别

Class<?>中的?是通配符,其实就是表示任意符合泛类定义条件的类,和直接使用Class效果基本一致,但是这样写更加规范,在某些类型转换时可以避免不必要的unchecked错误。 unchecked异常即RuntimeException:java中checked和unchecked异常的区别_maidaogo的专栏-优快云博客_java unchecked ...

zyz的博客 3905

器件物理与工艺:揭秘MOSFET寄生电容Cgd/Cgs的微观结构及演变

本文深入解析MOSFET寄生电容Cgd与Cgs的微观物理结构及其在开关过程中的非线性演变,重点探讨由Cgd反馈效应引发的米勒平台现象。通过分析器件物理机制与先进工艺技术,揭示电容特性对开关性能的影响,并提供工艺优化与设计策略,助力提升高频功率应用的效率与稳定性。

desk3的博客 1083

C#操作MySQL从入门到精通(3)——新建数据库、新建表

我们要首先新建一个数据库,并且在数据库中新建一系列的表来管理数据库。

qq_34059233的博客 951

Java Class类简介

<br />一,class类有什么用?<br /> class类的实例表示java应用运行时的类(class ans enum)或接口(interface and annotation)(每个java类运行时都在JVM里表现为一个class对象,可通过类名.class,类型.getClass(),Class.forName("类名")等方法获取class对象)。数组同样也被映射为为class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本类型boolean,byte,ch

混沌的博客 5万+

【Go语言实战】(2) Gin+Vue 电子商城

618来!!不用纠结去哪里剁手了!直接自己安排一个商场不香吗??

面向生活编程 4827

Java反射:Class类的使用

通过Java反射机制,可以在程序中访问已经转载到JVM中的Java对象的描述,实现访问、检测和修改描述Java对象本身信息的功能。Java反射机制的功能十分强大,在java.lang.reflect包中提供了对该功能的支持。 所有Java类均继承了Object类,在Object类中定义了一个getClass()方法,该方法返回一个类型为Class的对象。 JTextField textFie...

pan_junbiao的博客 4467

80、编程学习资源与x86知识全解析

本文详细介绍了编程学习中多个领域的优秀书籍和博客资源,涵盖逆向工程、C/C++、x86/x86-64架构、ARM、汇编语言、Java、UNIX、密码学等多个方向。同时,深入解析了x86架构的核心知识,包括术语、通用寄存器、FPU寄存器、SIMD寄存器、调试寄存器以及常用指令的使用方法和操作步骤。通过本文,读者可以系统地掌握底层编程知识,并应用于逆向工程、系统开发和性能优化等领域。

tree的博客 220

【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试

本文通过15个实战案例,系统讲解VSCode进行Python开发的环境配置、编码技巧、调试方法及性能优化,帮助初学者快速构建专业开发环境。

赶紧的博客 3758

public class和class的区别

在编写类的时候可以使用两种方式定义类:public class定义类和class定义类,那么这这两种方式有什么区别吗?如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致,如果类的声明使用了class的话,则类名称可以与文件名称不一致。范例:定义一个类(文件名称为:Hello.java) public class HelloDemo{ //声...

sdhagh的博客 3万+

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

本文将介绍如何使用VS2022克隆下载《植物大战僵尸C++自制版本》。Gitee项目地址:Gitee仓库地址Github项目地址:Github仓库地址游戏官网地址(下载可直接运行)游戏官网。

尔灵尔亿的博客 4932

你真的搞懂Class,class了么?

JavaWeb系列【线程】第一篇,分析重要知识点Sychnorized锁内的class究竟是个啥?

m0_56164356的博客 8165

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

认识class Class及其应用

一.    Class类1.    class Class对象描述了运行中的classes和interfaces。通过Class对象可以取得运行中的classes和interfaces的相关信息。2.    每个class都有一个相应的Class对象。每个class的Class对象存储于编译后的class所在的文件中。所以,当JVM装载一个.class文件时就会装载一个Class对象。所以,一

键者天行 7124

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Class类

Class类存在于java.lang包下,Class类的实例表示Java运行时的类(class and enum)或接口(interface and annotation),数组也同样被映射为一个Class对象,所有具有相同元素类型和维数的数组都共享该class对象,基本数据类型和void关键字同样表现为class对象Class的特点:Class类也是类的一种,与class关键字不一样(平时描述中也要区分Class和class的区别)

杰尼龟的小龟壳的博客 1054

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java中每个类都有个Class对象,那Class类有自己的Class对象吗?

Java 的 Class 类是一个强大的工具,它不仅为每个类提供了元数据,而且自身也遵循了这一规则,拥有自己的 Class 对象。下次当你在使用反射或者处理类相关的操作时,不妨想一想这个 Class 类的 Class 对象,它可能会给你带来新的编程灵感。这个 Class 对象,就像是每个类的身份证,记录着类的名字、属性、方法等信息。这意味着,Class 类自身也是一个类,按照 Java 的规则,它也应该有一个 Class 对象。是的,你没看错,Class 类有一个自己的 Class 对象,它就是。

龚小帅的博客 894

linux中class_create和class_register说明

本文介绍linux中class_create和class_register的相关使用方法 1 class结构体介绍 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数...

u012923807的博客 502

Java中class与Class的区别

一.class与Class区别 class是Java中的关键字,如public class Xxx 或者 class Xxx ,在声明Java类时使用。 而Class是一个类。 我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。 也可以认为对象是类的实例,类是Class的实例。 二.Class介绍 Class是一个类。如下图,它在java.lang包中。 它的构造函数是private属性,所以我们不能直接new一个Class对象出来,如下图注释段所说: “私有构造函数。只有Java虚

MrYushiwen的博客 9736

[Linux 驱动] -- Linux中class_create和class_register说明

本文介绍linux中class_create和class_register的相关使用方法 1 class结构体介绍 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数...

u014674293的博客 1350

Allegro基本规则设置指导书之Spacing net class-class 规则设置

CLS-TXC(4)就是说这个NET CLASS里有三组NET CLASS-CLASS,意思是说CLS-TXC(4)这个NET CLASS可以分别对网络HDMI_TXC、HDMI_TX0、HDMI_TX1、HDMI_TX2设规则(当鼠标停在这几个上面时会有提示的,如下图:ClassClass CLS-TXC:CLS-TXC字样)。同理CLS-TX0(4)都一样的。我例子里设的NET-CLASS名设的CLS-TXC、CLS-TX0、CLS-TX1、CLS-TX2名了(因为只用到NET-CLASS)。

tianpu2320959696的博客 3076

java.class.path详解

java中System.properties的一个属性“java.class.path”(系统类加载器加载字节码class的路径)的获取及详解: 获取 package com.yoyo.yotils.yoyo.system; import org.apache.commons.lang3.StringUtils; import java.util.Properties; /** * ...

u010730870的博客 6791

Class生成

*** 使用 MethodHandles.Lookup.defineClass 定义类*/@Test// 类的字节码// 加密// 解密Class

joeyhhhhh的博客 970

在java中class是什么意思_java中的class是什么意思

java中的class代表类,class类存在于java.lang包中。在Java中,每个class都有一个相应的Class对象。当我们编写一个类并进行编译后,在生成的【.class】文件中就会产生一个Class对象,它用于表示这个类的类型信息。Class类(在java.lang包中,Instances of the class Classrepresent classes and interfa...

weixin_36410316的博客 1万+

Class(类)

前言 ES6引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 但是JS 中并没有一个真正的 class 原始类型, class 仅仅只是对原型对象运用语法糖。所以,只有理解如何使用原型对象实现类和类继承,才能真正地用好 class。 基本语法 class Person{ constructor(name,age){ this.name = name; this.age = age; } Say(){

JOKEthel的博客 5664

Class.forName()、Class.class、getClass() 区别

问:简单谈谈你对 Java 中 Class.forName()、Class.class、getClass() 三者的理解? Class.class 的形式会使 JVM 将使用类装载器将类装入内存(前提是类还没有装入内存),不做类的初始化工作,返回 Class 对象。 Class.forName() 的形式会装入类并做类的静态初始化,返回 Class 对象。 getClass() 的形式会对类...

Morty的技术乐园 4627
上一篇: C
下一篇: Lombok 之 ToString
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值