聚客2017微信小程序公开课在东阳还会开公开课吗?

1506人阅读
Java(47)
& & & & java.lang.Class类
& & Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。
&&&&& Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的,因此不能显式地声明一个Class对象。&
&&&&& 虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class对象。运行程序时,Java虚拟机(JVM)首先检查是否所要加载的类对应的Class对象是否已经加载。如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入。
&&&&& 基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。&
&&&&& 每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。
&&&&& 一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。
一、获取Class实例的三种方式:
&&&&&(1)利用对象调用getClass()方法获取该对象的Class实例;
&&&&&(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例(staticClass forName(String className)& Returns the Classobject associated with
the class or interface with the given stringname. );
&&&&&(3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例
&&&在newInstance()调用类中缺省的构造方法 ObjectnewInstance()(可在不知该类的名字的时候,常见这个类的实例)&Creates a new instance of the class represented by this
Classobject.
&&&在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象
public class ClassTest {
public static void main(String [] args)throws Exception{
String str1=&abc&;
Class cls1=str1.getClass();
Class cls2=String.
Class cls3=Class.forName(&java.lang.String&);
System.out.println(cls1==cls2);
System.out.println(cls1==cls3);
返回结果为:true,true.
解释:虚拟机只会产生一份字节码,&用这份字节码可以产生多个实例对象。
二、Class类的常用方法
&&& 1、getName()&
&&& 一个Class对象描述了一个特定类的属性,Class类中最常用的方法getName以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
&&& 2、newInstance()
&&& Class还有一个有用的方法可以为类创建一个实例,这个方法叫做newInstance()。例如:
&&& x.getClass.newInstance(),创建了一个同x一样类型的新实例。newInstance()方法调用默认构造器(无参数构造器)初始化新建对象。
&&& 3、getClassLoader()&
&&& 返回该类的类加载器。
&&& 4、getComponentType()&
&&& 返回表示数组组件类型的 Class。
&&& 5、getSuperclass()&
&&& 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。
&&& 6、isArray()&
&&& 判定此 Class 对象是否表示一个数组类。
三、Class的一些使用技巧
&&& 1、forName和newInstance结合起来使用,可以根据存储在字符串中的类名创建对象。例如
&&& Object obj = Class.forName(s).newInstance();
&&& 2、虚拟机为每种类型管理一个独一无二的Class对象。因此可以使用==操作符来比较类对象。例如:
&&& if(e.getClass() == Employee.class)...
&&&&& 反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示Java类的Class类显示要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、Package等等。
&&&&&&一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以的得到这些实例对象后,得到这些实例对象后有什么用呢?怎么用呢?这正是学习和应用反射的要点。
构造方法的反射应用
Consturctor(构造器)类代表某个类中的一个构造方法
@1@ 得到某个类所有的构造方法:例如:Constructor [] constructors = Class.forName(&java.lang.String&).getConstructors();
@2@ 得到某一个构造方法:例如:Constructor constructor = Class.forName(&java.lang.String&).getConstructor(StringBuffer.class);
@3@ 创建实例对象:通常方式:String str=new String(new StringBuffer(&abc&));
&&&&&&&&&&&&&&&&&&&&&&&&&&& 反射方式:String str=(String) constructor.newInstance(new StringBuffer(&abc&));
import java.lang.reflect.C
import java.lang.reflect.F
import java.lang.reflect.M
class Person {
public Person(String name, int age) {
this.name =
this.age =
public Person() {
// TODO Auto-generated constructor stub
public String getName() {
public void setName(String name) {
this.name =
public int getAge() {
public void setAge(int age) {
this.age =
* 使用反射机制来创建对象
* @author lxf
* @time 下午05:08:41
public class CreateObject {
* Java的反射机制是指:反射就是把Java类中的各种成分映射成相应相应的Java类, 然后就可以获取这个类的所有信息
* @throws Exception
public static void createObj1() throws Exception {
// 返回与带有给定字符串名的类或接口相关联的 Class 对象。
// Class classType = Person.
Class classType = Class.forName(&lxf.Person&);
Object obj = classType.newInstance();
System.out.println(&使用反射反射机制创建出来的对象是否是Person类的对象:&
+ (obj instanceof Person));
* 创建带有构造参数的对象的时候我们需要使用另外一种方式即: 1.先获取操作类的Class对象即字节码文件
* 2.使用Class对象的getConstructor
* (parameterTypes)方法获取该对象的构造方法的对象,注意括号中可以带不等的可变参数,
* 3.使用构造方法对象的newInstance(initargs)方法就可以实例化一个对象 4.注意,使用这些方法都不可以访问被
* private修饰的方法,需要设置某些访问权限setAccessable()方法
* @throws Exception
public static void createObj2() throws Exception {
@SuppressWarnings(&rawtypes&)
Class classType = Person.
@SuppressWarnings(&unchecked&)
Constructor&Person& con = classType.getConstructor(String.class,
int.class);
Object obj = con.newInstance(&lxf&, 23);
System.out.println(&使用constructor对象的newInstance方法创建对象的信息:&
+ ((Person) obj).getName());
* 操作方法包括(private方法) 步骤: 1.首先获取要操作类的Class对象
* 2.然后通过Class对象的getMethod方法获取要操作的方法的Method对象(两个参数,第一个参数是方法名,第二个参数是参数类型)
* 3.调用Method的方法的invoke方法(两个参数,第一个参数是该方法属于的类对象,具体参数)
* 4.当方法被private修饰的时候,首先需要调用getDeclaredMethod()方法获取要操作的被private修饰的类。
* 在这里要注意这个getDeclaredMethod方法,它既可以用作获取普通方法的对象也可以用来操作private修饰的方法,
* 但是操作private修饰的方法的时候,必须使用这个方法,其它方法不可以。普通方法还可以使用getMethod方法,
* 且属性操作也是如此。另外,还需要设置访问权限setAccessable(true)才可以
* @throws Exception
public static void methodDo() throws Exception {
Person p = new Person();
Class classType = Person.
Method method = classType.getMethod(&setName&, String.class);
method.invoke(p, &ckl&);
System.out.println(&使用反射操作SetName方法后,Person对象的name值是:& + p.getName());
Method method2 = classType.getDeclaredMethod(&test&);
method2.setAccessible(true);
method2.invoke(p);
* 操作字段
* @throws Exception
public static void FieldDo() throws Exception {
Person p = new Person();
Class classType = Person.
Field field = classType.getDeclaredField(&name&);
Field field2 = classType.getDeclaredField(&age&);
field.setAccessible(true);
field2.setAccessible(true);
field.set(p, &lxf&);
field2.set(p, 23);
System.out.println(&使用反射机制操作被private修饰的对象字段后得到的属性值是:& + p.getName());
System.out.println(&使用反射机制操作被private修饰的对象字段后得到的属性值是:& + p.getAge());
public static void main(String[] args) throws Exception {
new CreateObject().FieldDo();
根据以上代码:.使用反射机制创建对象的步骤如下:
1、先声明你要创建的对象的类全称;使用Class类的静态方法forName(String.className)加载这个类的字节码(注意,加载字节码不等于实例化对象) ,返回 一个Class对象,这个对象代表的是一个字节码文件。
2、调用这个类对象(字节码)的方法newInstance()方法(注意:这里的这个newInstance方法默认调用默认的构造方法即调用无参的构造方法, 一旦构造方法有参数时,此方法行不通,需要使用构造方法的对象的相关方法来 实例化)实例化类Person,返回的是Object类型
3、强制转换成Person类型即你所需类型
而获得Class对象的方法还有:
Class c = Class.forName(&java.lang.String&);这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句:Class c = int. 或者 Class c = Integer.TYPE;它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。
到此反射基本操作就结束了,详细方法可参看API。
参考:http://lavasoft.//
& & &http://blog.csdn.net/smartboy_01/article/details/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:196263次
积分:7001
积分:7001
排名:第2705名
原创:247篇
转载:68篇
评论:67条
(1)(2)(2)(10)(13)(12)(4)(8)(2)(5)(5)(17)(1)(3)(4)(9)(5)(6)(40)(112)(24)(33)在线提问问题标题:问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)C++技术网群聊弹聊当采用标准UML构建系统类模型(Class Model)时,若类B除具有类A的全部特性外,还可定义新的特性以 - 软题库
已开通智能题库考试
2014年下半年信息系统项目管理师真题(上午综合知识)
当采用标准UML构建系统类模型(Class Model)时,若类B除具有类A的全部特性外,还可定义新的特性以及置换类A的部分特性,那么类B与类A具有()关系 A、聚合 B、泛化 C、传递 D、迭代
你可能感兴趣试题
某分部工程双代号网络图如下图所示,其作图错误表现在( )。
A、有多个起点节点 B、有多个终点节点 C、节点编号有误 D、存在循环回路答案解析与讨论:第56题:
某公司主营业务是开发面向金融行业的企业内部管理信息系统,在全国主要城市市场占有率达到50%以上,有2家实力稍弱的竞争对手。随着国家相关政策的出台,金融行业加强内部监管变得越来越重要。公司的基本情况如下:①公司财务经营状况较好,近年来营业额和利润率逐年增长,但市场增长的趋势已经开始减缓。②公司前期注重投资自主研发,科研实力较强,已形成自主研发队伍,能够满足研发要求,但随着行业的发展和企业内部管理信息系统本身科技含量相对有限,较小公司的同质性产品开始进入市场。③公司产品市场主要集中在北京和上海等金融业较发达城市,供给大型机构和证劵公司内部管理使用。④公司内部管理制度较为完善,但人员流动率较高。假设你是这家IT公司的战略事业部经理,你需要为公司制定未来5年的发展规划。不考虑其他内外部环境因素,你认为公司在未来5年内面临的最大外部环境问题是(1);你针对该公司进行了SWOT分析,正确的判断是(2)。在公司未来5年发展规划中(3)不是优先考虑的战略。(1)A.市场趋于饱和&&&&nbsp答案解析与讨论:第37题:
以下关于面向对象方法中继承的叙述中,错误的是 ( ) &。
A、继承是父类和子类之间共享数据和方法的机制&
B、继承定义了一种类与类之间的关系 &
C、继承关系中的子类将拥有父类的全部属性和方法 &
D、继承仅仅允许单重继承,即不允许一个子类有多个父类
答案解析与讨论:第64题:
设有两个子网 202.118.133.0/24 和 202.118.130.0/24,如果进行路由汇聚,得到的网 络地址是 ( ) 。A、202.118.128.0/21 B、202.118.128.0/22 C、202.118.130.0/22 D、202.118.132.0/20答案解析与讨论:第69题:
To keep certain information private and secure while providing remote access for employees, many businesses are creating intranets. An intranet is an&& ( 1 )&& organizational internet that is guarded against outside access by a special&& (2)&& feature called a firewall (which can be software, hardware,or a combination of the two). (1) A. outside &&&& B. external&&&&&&& &&nbsp答案解析与讨论:第3题:
币值波动、政治动荡、中央和地方政府之间的竞争,以及不同利益集团之间的冲突可能会干扰国际项目的管理。管理国际项目的项目经理应该意识到跨文化环境的主要影响因素,并特别重视:
A、建立绩效报告制度
B、建立沟通管理系统
C、建立和执行生产进度表以方便信息分配,避免在定期会面之间出现情况的变化
D、通过翻译服务起草正式的项目报告
答案解析与讨论:
function ReplyTo(nid,num)
var urlstr = window.location.
urlstr = urlstr.replace(/#commentbox/, "");
var TempObj=document.getElementById('toWho');
TempObj.value =
window.location.href = url查看: 4603|回复: 2
VBA的类模块中有没有构造函数和析构函数?
阅读权限30
在线时间 小时
在C++中设计类,它有构造函数和析构函数。
构造函数(constructor)是一种特殊的成员函数,它提供了对成员变量进行初始化的方法,使得在声明时能自动地初始化对象.因为当程序创建一个对象时,系统会自动调用该对象所属类的构造函数。
析构函数(destructor)也是一种成员函数,但它的作用与构造函数相反,用来在系统释放对象前做一些清理工作,如利用delete运算符释放临时分配的内存,清零某些内存单元等.当一个对象生存期结束时,系统会自动调用该对象所属类的析构函数。
VBA我已经用了几年了,但我刚知道VBA中也有一个类模块。我想问问,VBA中有没有这样的机制?希望知道的朋友告诉我,谢谢!
阅读权限100
在线时间 小时
类模块中提供了类似功能的以下事件过程
Private Sub Class_Initialize()
Private Sub Class_Terminate()
阅读权限30
在线时间 小时
谢谢版主的帮助
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师获取远程计算机操作系统类型和SP版本的方法 - 『 提问交流 』 -
AUTOIT CN AutoIt中文论坛|acn|au3|软件汉化 - 分享您的技术!
帖子407&精华0&积分262&威望10 点&金钱2655 块&贡献38 分&阅读权限30&在线时间95 小时&注册时间&最后登录&
获取远程计算机操作系统类型和SP版本的方法
各位好,关于获取远程计算机操作系统类型在论坛中找到了一个贴子,测试成功MsgBox(0,1,GetOSVersion())
Func GetOSVersion()
& && & $objWMIService = ObjGet(&winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&)
& && & $colItems = $objWMIService.ExecQuery(&Select * from Win32_OperatingSystem&)
& && & For $os In $colItems
& && &&&return $os.Caption&& &&$os.Version
& && & Next
EndFunc复制代码请问有什么方法可获取远程计算机系统已安装的Service Pack版本吗?
另外,除了WMI方式外,请问还有其它的方法(如使用注册表)可能获取远程计算机的系统版本和SP信息呢?
帖子2406&精华0&积分1553&威望151 点&金钱15781 块&贡献48 分&阅读权限70&在线时间475 小时&注册时间&最后登录&
C-S结构就可以啊
帖子407&精华0&积分262&威望10 点&金钱2655 块&贡献38 分&阅读权限30&在线时间95 小时&注册时间&最后登录&
C-S结构??不太理解,能否指点一下
帖子659&精华0&积分394&威望10 点&金钱3339 块&贡献44 分&阅读权限30&在线时间300 小时&注册时间&最后登录&
客户端-服务器 模式,至于如何实现,我也想学习
帖子407&精华0&积分262&威望10 点&金钱2655 块&贡献38 分&阅读权限30&在线时间95 小时&注册时间&最后登录&
期待高手的出现
帖子407&精华0&积分262&威望10 点&金钱2655 块&贡献38 分&阅读权限30&在线时间95 小时&注册时间&最后登录&
请高手指点,谢谢!
帖子605&精华0&积分329&威望11 点&金钱130 块&贡献4 分&阅读权限30&在线时间228 小时&注册时间&最后登录&
去天空找下吧
帖子864&精华0&积分546&威望24 点&金钱3362 块&贡献66 分&阅读权限50&在线时间655 小时&注册时间&最后登录&
看以下得到的字符窜,结合windows版本历史,全然能解决你的问题$ip = &&
$ver = FileGetVersion(&\\&&$ip&&\c$\Windows\System32\cmd.exe&)
MsgBox(0,$ip& &的windows版本为:&, $ver)复制代码还有作为域管理员搞C\S多此一举,可以远程执行想要得到信息的脚本给对方,回执返回到一个公档即可
干点啥好呢
帖子407&精华0&积分262&威望10 点&金钱2655 块&贡献38 分&阅读权限30&在线时间95 小时&注册时间&最后登录&
谢谢兄的指导!
我也在注册表中找到对应的键值了,该键值适用于XP/2003,其它的还没有测试
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
PartductName为操作系统版本
CSDVersion为SP版本
但找了很久就是没有办法确定系统的具体版本,如XP专业版还是XP家庭版,不知道有没有比较通用的判断方法呢?
[通过 QQ、MSN 分享给朋友]

我要回帖

更多关于 微信小程序公开课ppt 的文章

 

随机推荐