barriers / 阅读 / 详情

java 定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实

2023-07-12 19:00:19
共2条回复
ardim

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

public class reflect_j

{

public static void main(String[] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException

{

Person p = new Person();

Class c = p.getClass();

Method m = c.getMethod("setAge",String.class);

m.invoke(p, "21");

System.out.println("age:"+p.getAge());

}

}

class Person

{

public String name;

public String age="10";

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public String getAge()

{

return age;

}

public void setAge(String age)

{

this.age = age;

}

}

苏萦

自己也在学习ing...

import java.lang.reflect.*;

public class Test

{

public static void main(String []args) throws Exception{

Class c = Class.forName("Persion");

Persion p = (Persion)c.newInstance();

Method m = c.getMethod("setName",String.class);

m.invoke(p,"xiaoli");

Field f = c.getField("age");

f.setInt(p,10);

System.out.println(p.toString());

}

};

class Persion

{

public String name;

public int age;

public Persion(String name,int age){

this.name=name;

this.age=age;

}

public Persion(){

this.name="lili";

this.age=1;

}

public void setName(String name){

this.name=name;

}

public String getName(){

return this.name;

}

public void setAge(int age){

this.age=age;

}

public int getAge(){

return this.age;

}

public String toString(){

return "name="+this.name+",age="+this.age;

}

};

相关推荐

class c中文是什么意思

CLass讠c什么意思
2023-07-12 13:02:372

classC在精度等级中算什么

classC在精度等级中算低精度。因为精度等级是根据国家标准GB785-65制定的,classC属于低精度。只用于一般机床,如卧式车床、铣床等。
2023-07-12 13:02:451

美国驾照class c和d区别

美国驾照class c和d的区别是所驾驶的汽车类型不同。ClassC是既不符合A类也不符合B类的大型车辆,是用于驾驶包括驾驶人在内,超过16名载客人数的大中型客车。而ClassD是小型汽车驾驶执照。美国驾照其他类别:ClassA:重量为11794千克或以上(26001磅)的大型车辆,并且可以牵引或拖带超过4536千克(10000磅)的车辆。ClassB:重量为11794千克或以上(26001磅)的大型车辆,但是不能牵引或拖带重量超过4536千克(1000磅)的车辆。ClassM:摩托车驾驶执照。ClassV:船只驾驶执照。
2023-07-12 13:02:541

Classc是什么鞋

非常有男人味简约而不简单,奢华而价物美价廉,更显尊贵霸气十足,ECCO另世界更精彩品名:CLASSC系列世界上最舒适的地方鞋面:意大利进口天然头层小牛皮鞋舌:也是采用头层小牛皮鞋口:CLASSC FASHION精致别雅(FASHION解释:快乐幸福绅士)鞋LOGO:高频踩压凹凸有致内衬:高级真皮内里鞋垫:上层头层真皮防臭吸汗+下层新特发泡EVA会呼吸减震材料大底:丝模三维菱角吸附防滑设计鞋底:高密度BR橡胶弹性柔韧减震耐磨技术大底大底:蜂窝纳米硅胶防滑减震装置产地:广东出口地:北美尺码:38 39 40 41 42 43包装:高档原盒/高档手提袋/拷贝纸市场$:299美元 鞋皇价:368 元(现在就省1000多不是梦)1:鞋皇给大家的保障天价性价比-绝对超值2:我们保证9天无理由退换货 -售后无忧3:60天断底断面包换质量可靠
2023-07-12 13:03:121

sim卡功耗

目前常用的为CLASSB与CLASSC。其中:CLASSB电压为2.7-3.3V。CLASSC电压为1.62-1.98V。功耗方面CLASSB最大为6mA。CLASSC最大为4mA。一般情况下,SIM卡检测电路要求支持1.8V与3.0V。新旧卡耗电并无差别。
2023-07-12 13:03:211

c++语言中class是什么意思?

在C++ 语言中class是定义类的关键字,C++中也可以使用struct定义类。x0dx0a两者区别是,用class定义的类,如果数据成员或成员函数没有说明则默认为private(私有)的,而用struct定义的,默认为public(公共)的。  x0dx0a 示例   #include   using namespace std;   class C {   public:   int getAge() const {   return age;   }   void setAge( int n ) {   age = n;   }   private:   int age;   };   int main() {   C c;   c.setAge( 22 );   cout << "My age: " << c.getAge() << endl;   return 0;x0dx0a  }x0dx0a作为面向对象程序设计的基础,掌握class的基本结构和特性是十分重要的。
2023-07-12 13:03:301

家宽用户光猫设置安装CLASS-C光模块收光范围是多少

(-8,-27)。家宽用户光猫设置安装CLASS-C光模块收光范围是(-8,-27)。因为接收光的范围固定是-8,光猫显示发送-27,所以家宽用户光猫设置安装CLASS-C光模块收光范围是(-8,-27)。
2023-07-12 13:03:371

计算机的CLASS C是什么意思

哎,这是类的定义哈,这是C++中的语法格式。
2023-07-12 13:03:472

class c网段有几个IP位置?急!!!

254
2023-07-12 13:03:555

C++中 new 在什么时候用?? 为什么 Class c = new Class报错

new函数是返回的是一个指针,当然必需赋值给一个指针.
2023-07-12 13:04:114

Class c = null;这个语句是否正确??(C#)

类名 对象=null,这只是声明了一个对象,但没有进行初始化,为空。语法没有任何问题,有些情况下这样声明是必须的!
2023-07-12 13:04:323

C/C++类继承问题

C内部有A和B的成员排列顺需先A后B,所以pa==pc,pb!=pc
2023-07-12 13:04:405

class C { C( C obj );//错误 C( C obj, int n );//正确 ... };为什么?

C(C obj) 编译器会认为你是要写复制构造函数,class C { C( const C& obj );};这样写就没问题。
2023-07-12 13:04:541

Class c = Class.forName(“T")没有创建T的对象吗,c.newInstatnce()才创建吗

Class.forName("")返回的是一个类 而newInstance()返回的是一个实例 即对象你看一下吧------Class.forName(xxx.xx.xx) 返回一个类 首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。 至于什么时候用,可以考虑一下这个问题,给出一个字符串变量,它代表一个类的包名和类名,怎么实例化它?只有提到的这个方法了,不过要再加一点。 A a = (A)Class.forName("pacage.A").newInstance(); 这和 A a = new A(); 是一样的效果。 相关的补充问题 JVM会执行静态代码段,要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了静态代码了,以后也就不会再走这段静态代码了。 Class.forName(xxx.xx.xx) 返回的是一个类 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段,动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象 String str = 用户输入的字符串 Class t = Class.forName(str); t.newInstance(); 在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别? 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。 那么为什么会有两种创建对象方式? 这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如: class c = Class.forName(“Example”); factory = (ExampleInterface)c.newInstance(); 其中ExampleInterface是Example的接口,可以写成如下形式: String className = "Example"; class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 进一步可以写成如下形式: String className = readfromXMlConfig;//从xml 配置文件中获得字符串 class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要它们继承ExampleInterface也就是factory就可以。 从JVM的角度看,使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。 现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 分步的好处是显而易见的:可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。 最后用最简单的描述来区分new关键字和newInstance()方法的区别: newInstance: 弱类型。低效率。只能调用无参构造。 new: 强类型。相对高效。能调用任何public构造。 forName() 和 ClassLoader 的 loadClass 方法。 为什么 forName()是会执行static语句? 因为默认情况它总是初始化这个被装载的类。 关于forName()方法 这个方法总是返回要加载的类的Class类的实例 1、forName(String className)单参数时, initialize=true a.总是使用当前类装载器(也就是装载执行forName()请求的类的类装载器) b.总是初始化这个被装载的类(当然也包括:装载、连接、初始化) 2、forName(String className, boolean initialize, ClassLoader loader) a.loader指定装载参数类所用的类装载器,如果null则用bootstrp装载器。 b.initialize=true时,肯定连接,而且初始化了; c.false时,绝对不会初始化,但是可能被连接了,有个例外,如果在调用这个forName()前,已经被初始化了,那么返回的类型也肯定是被初始化的(当然,暗含着: 被同一个loader所装载的,而且该类被初始化了) 关于用户自定义的类装载器的loadClass()方法 1、loadClass(String name)单参数时, resolve=false a.如果该类已经被该类装载器所装载,那么,返回这个已经被装载的类型的Class的实例,否则,就用这个自定义的类装载器来装载这个class,这时不知道是否被连接。绝对不会被初始化 b.这时唯一可以保证的是,这个类被装载了。但是不知道这个类是不是被连接和初始化了 2、loadClass(String name, boolean resolve) a.resolve=true时,则保证已经装载,而且已经连接了。 resolve=falses时,则仅仅是去装载这个类,不关心是否连接了,所以此时可能被连接了,也可能没有被连接
2023-07-12 13:05:011

GPON CLASS C+是什么

gpon系统光模块的要求,有A、B、C三个等级,每个等级的光指标不一样。具体可参照《接入网技术要求 ——吉比特的无源光网络(GPON) 第2部分:物理媒质相关(PMD)层要求》
2023-07-12 13:05:092

C语言中的class的应用

很想回答你但是我确实不知道怎么回答
2023-07-12 13:05:196

java一个程序中包含三个类怎么写

在主类创建就OK了,别说三个,一百个也是可以的
2023-07-12 13:05:384

多继承有什么坏处,为什么java搞单继承,接口为什么可以摈弃这些坏处

多继承会出现“可怕的菱形”结构。假设 B继承A,C也继承AB重写了A中的方法,C也重写了A中的方法。此时 如果D 同时继承B和C的话,那么D中的某个方法(源于A的),究竟是用B的还是C的呢?个人认为Sun在设计接口这个特性时,充分考虑了EJB技术。多继承和反射机制没有什么关系。接口中只能声明静态常量。成员方法 在默认情况下就是抽象的
2023-07-12 13:05:484

乔丹衣服的这个classc是什么?

是classic,意思是经典款
2023-07-12 13:05:571

C语言中的class函数有什么用~

创建一个类,如:class point{public:point(int x=0,y=0){X=x;Y=y}point(point &p);int GetX(){returnX;}int写不下了}
2023-07-12 13:06:073

C++中 class的意思?

2023-07-12 13:06:456

c++的class相当于c的什么?c可以用class吗

类似于struct 两者大体上差不多,c中不能用class
2023-07-12 13:07:033

java 可不可以继承多个类?

不能。一个类不能直接继承多个类,java是单继承语言。比如说这样:class A extends B,C 不能这样写,因为java不支持多继承。但是可以像下面这样实现继承多个类:class A extends B,class C extends A,这样C就同时继承了B和A两个类了。
2023-07-12 13:07:132

C7取下电池后面标签上英文“ CLASS B”是什么意思,你们的有吗?

CLASS B:通话连接优先级高于数据连接就是说在GPRS上网的时候如果有短信或电话接入会自动暂时断开GPRS,优先保证通话或短信连接。CLASS A:数据连接和通话连接互不影响就是说打电话或发短信的同时不断开GPRS连接。CLASS C:无法自动在数据连接和通话连接之间切换在GPRS上网的时候短信进不来,电话也表现为正忙,必须手动断开GPRS才能正常打电话和收发短信。这个CLASS跟手机网络制式有关,和质量无关,目前大部分GSM手机都是CLASS B。有些手机上网的时候无法收短信和接电话,就是因为它是CLASS C级别。3G制式的手机不存在这个冲突。
2023-07-12 13:07:391

谷歌A跟谷歌有什么不一样

谷歌股票(原代码GOOG)已于2014年4月3日进行拆股,拆分为A类股GOOGL(有投票权)和C类股GOOG(无投票权)两种,现均支持正常交易。
2023-07-12 13:07:492

不同class的光模块,比如classB+和classC+,从不同的GPON板拆下来,可以互换么?

支持的传输距离和分光数目不一样。要看你的网络具体情况才知道是否可以互换。GPON OLT模块 发送功率 接受灵敏度 (单位: dBm)Class B+: 1.5~5 -28 Class C+: 3~7 -32ONU模块Class B+: 0.5~5 -27 Class C+: 0.5~5 -30
2023-07-12 13:07:581

#includeclass C{inti;public:C();C(int val);void Dispal();~C();};

没主函数,不能运行
2023-07-12 13:08:052

Java类别载入器

1 Java的动态特性Java的动态特性有两种,一是隐式的;另一种是显示的。隐式的(implicit)方法就是当程式设计师用到new 这个Java 关键字时,会让类别载入器依需求载入您所需要的类别,这种方式使用了隐式的(implicit)方法。显式的方法,又分成两种方式,一种是藉由java.lang.Class 里的forName()方法,另一种则是藉由java.lang.ClassLoader 里的loadClass()方法。您可以任意选用其中一种方法。2 隐式的动态特性在执行java文件时,只有单独的变量声明是不会载入相应的类的,只有在用new生成实例时才载入如示例所示:public class Mainpublic static void main(String args[]){A a1 = new A() ;B b1 ;}类A和B相同,如下:public class A{public void print(“using A”);}编译后,可用java _verbose:class Main运行,察看输出结果。可以看到JVM只载入了A,而没有载入B.另外,类的载入只在执行到new一个类时,才载入,如果没有执行到new语句,则不载入。如://类Officepublic class Office{public static void main(String[] args){Word myword=null;Excel myexcel=null;if (args[0].equals("Word")){myword = new Word();myword.start();}if (args[0].equals("Excel")){myexcel = new Excel();myexcel.start();}}}//类Word和Excel基本相同,如下public class Word{public void start(){System.out.println("using word");}}在dos命令提示符下,输入java _verbose Office Excel可以看到JVM只载入Excel类,而不载入Word类。3 显示的动态特性3.1 java.lang.Class里的forName()方法在上一个Office示例中,进行如下修改:一 加入Assembly类public interface Assembly{public void start();}二 让Word和Excel类实现该接口public class Word implements Assembly{public void start(){System.out.println("using word");}}三 Office 类如下所示public class Office{public static void main(String[] args) throws Exception{java.lang.Class c = java.lang.Class.forName(args[0]);Object o = c.newInstance();Assembly a = (Assembly)o;a.start();}}在命令提示符下输入java _verbose Office Word 输出入下:通过上图你可以看到,interface 如同class 一般,会由编译器产生一个独立的类别档(.class),当类别载入器载入类别时,如果发现该类别继承了其他类别,或是实作了其他介面,就会先载入代表该介面的类别档,也会载入其父类别的类别档,如果父类别也有其父类别,也会一并优先载入。换句话说,类别载入器会依继承体系最上层的类别往下依序载入,直到所有的祖先类别都载入了,才轮到自己载入。下面介绍一下 forName 函数, 如果您亲自搜寻Java 2 SDK 说明档内部对於Class 这个类别的说明,您可以发现其实有两个forName()方法,一个是只有一个参数的(就是之前程式之中所使用的):public static Class forName(String className)另外一个是需要三个参数的:public static Class forName(String name, boolean initialize,ClassLoader loader)这两个方法,最後都是连接到原生方法forName0(),其宣告如下:private static native Class forName0(String name, boolean initialize, ClassLoader loader)throws ClassNotFoundException;只有一个参数的forName()方法,最後叫用的是:forName0(className, true, ClassLoader.getCallerClassLoader());而具有三个参数的forName()方法,最後叫用的是:forName0(name, initialize, loader);这里initialize参数指,在载入类之后是否进行初始化,对于该参数的作用可用如下示例察看:类里的静态初始化块在类第一次被初始化时才被呼叫,且仅呼叫一次。在Word类里,加入静态初始化块public class Word implements Assembly{static{System.out.println("word static initialization ");}public void start(){System.out.println("using word");}}将类Office作如下改变:public class Office{public static void main(String[] args) throws Exception{Office off= new Office();System.out.println("类别准备载入");java.lang.Class c = java.lang.Class.forName(args[0],true,off.getClass().getClassLoader());System.out.println("类别准备实体化");Object o = c.newInstance();Object o2 = c.newInstance();}}#p#副标题#e#如果第二个参数为true 则输出入下如果为false ,则输出入下:可见,类里的静态初始化块仅在初始化时才执行,且不过初始化几次,它仅执行一次(这里有一个条件,那就是只有它是被同一个类别载入器多次载入时,才是这样,如果被不同的载入器,载入多次,则静态初始化块会执行多次)。关于第三个参数请见下节介绍3.2 直接使用类别载入器 java.lang.ClassLoader在Java 之中,每个类别最後的老祖宗都是Object,而Object 里有一个名为getClass()的方法,就是用来取得某特定实体所属类别的参考,这个参考,指向的是一个名为Class 类别(Class.class) 的实体,您无法自行产生一个Class 类别的实体,因为它的建构式被宣告成private,这个Class 类别的实体是在类别档(.class)第一次载入记忆体时就建立的,往後您在程式中产生任何该类别的实体,这些实体的内部都会有一个栏位记录着这个Class 类别的所在位置。基本上,我们可以把每个Class 类别的实体,当作是某个类别在记忆体中的代理人。每次我们需要查询该类别的资料(如其中的field、method 等)时,就可以请这个实体帮我们代劳。事实上,Java的Reflection 机制,就大量地利用Class 类别。去深入Class 类别的原始码,我们可以发现Class类别的定义中大多数的方法都是原生方法(native method)。在Java 之中,每个类别都是由某个类别载入器(ClassLoader 的实体)来载入,因此,Class 类别的实体中,都会有栏位记录着载入它的ClassLoader 的实体(注意:如果该栏位是null,并不代表它不是由类别载入器所载入,而是代表这个类别由靴带式载入器(bootstrap loader,也有人称rootloader)所载入,只不过因为这个载入器并不是用Java 所写成,是用C++写的,所以逻辑上没有实体)。系统里同时存在多个ClassLoader 的实体,而且一个类别载入器不限於只能载入一个类别,类别载入器可以载入多个类别。所以,只要取得Class 类别实体的参考,就可以利用其getClassLoader()方法篮取得载入该类别之类别载入器的参考。getClassLoader()方法最後会呼叫原生方法getClassLoader0(),其宣告如下:private native ClassLoader getClassLoader0();最後,取得了ClassLoader 的实体,我们就可以叫用其loadClass()方法帮我们载入我们想要的类别,因此上面的Office类可做如下修改:public class Office{public static void main(String[] args) throws Exception{Office off= new Office();System.out.println("类别准备载入");ClassLoader loader = off.getClass().getClassLoader();java.lang.Class c = loader.loadClass(args[0]);System.out.println("类别准备实体化");Object o = c.newInstance();Object o2 = c.newInstance();}}其输出结果同forName方法的第二个参数为false时相同。可见载入器载入类时只进行载入,不进行初始化。获取ClassLoader还可以用如下的方法:public class Office{public static void main(String[] args) throws Exception{java.lang.Class cb = Office.class;System.out.println("类别准备载入");ClassLoader loader = cb.getClassLoader();java.lang.Class c = loader.loadClass(args[0]);System.out.println("类别准备实体化");Object o = c.newInstance();Object o2 = c.newInstance();}}在此之前,当我们谈到使用类别载入器来载入类别时,都是使用既有的类别载入器来帮我们载入我们所指定的类别。那麽,我们可以自己产生类别载入器来帮我们载入类别吗? 答案是肯定的。利用Java 本身提供的.URLClassLoader 类别就可以做到。public class Office{public static void main(String[] args) throws Exception{URL u = new URL("file:/d:/myapp/classload/");URLClassLoader ucl = new URLClassLoader(new URL[]{u});java.lang.Class c = ucl.loadClass(args[0]);Assembly asm = (Assembly)c.newInstance();asm.start();}}在这个范例中,我们自己产生.URLClassLoader 的实体来帮我们载入我们所需要的类别。但是载入前,我们必须告诉URLClassLoader 去哪个地方寻找我们所指定的类别才行,所以我们必须给它一个URL 类别所构成的阵列,代表我们希望它去搜寻的所有位置。URL 可以指向网际网路上的任何位置,也可以指向我们电脑里的档案系统(包含JAR 档)。在上述范例中,我们希望URLClassLoader 到d:mylib 这个目录下去寻找我们需要的类别, 所以指定的URL为”file:/d:/my/lib/”。其实,如果我们请求的位置是主要类别(有public static void main(String args[])方法的那个类别)的相对目录,我们可以在URL 的地方只写”file:lib/”,代表相对於目前的目录。下面我们来看一下系统为我们提供的3个类别载入器:java.exe 是利用几个基本原则来寻找Java Runtime Environment(JRE),然後把类别档(.class)直接转交给JRE 执行之後,java.exe 就功成身退。类别载入器也是构成JRE 的其中一个重要成员,所以最後类别载入器就会自动从所在之JRE 目录底下的libt.jar 载入基础类别函式库。当我们在命令列输入java xxx.class 的时候,java.exe 根据我们之前所提过的逻辑找到了JRE(Java Runtime Environment),接着找到位在JRE 之中的jvm.dll(真正的Java 虚拟机器),最後载入这个动态联结函式库,启动Java 虚拟机器。虚拟机器一启动,会先做一些初始化的动作,比方说抓取系统参数等。一旦初始化动作完成之後,就会产生第一个类别载入器,即所谓的Bootstrap Loader,Bootstrap Loader 是由C++所撰写而成(所以前面我们说,以Java 的观点来看,逻辑上并不存在Bootstrap Loader 的类别实体,所以在Java 程式码里试图印出其内容的时候,我们会看到的输出为null),这个Bootstrap Loader 所做的初始工作中,除了也做一些基本的初始化动作之外,最重要的就是载入定义在sun.misc 命名空间底下的Launcher.java 之中的ExtClassLoader(因为是inner class,所以编译之後会变成Launcher$ExtClassLoader.class),并设定其Parent 为null,代表其父载入器为BootstrapLoader。然後Bootstrap Loader 再要求载入定义於sun.misc 命名空间底下的Launcher.java 之中的AppClassLoader(因为是inner class,所以编译之後会变成Launcher$AppClassLoader.class),并设定其Parent 为之前产生的ExtClassLoader 实体。这里要请大家注意的是,Launcher$ExtClassLoader.class 与Launcher$AppClassLoader.class 都可能是由Bootstrap Loader 所载入,所以Parent 和由哪个类别载入器载入没有关系。三个载入器的层次关系可通过运行下面的例子察看:public class Test{public static void main(String[] args){ClassLoader cl1 = Test.class.getClassLoader();System.out.println(cl1);ClassLoader cl2 = cl1.getParent();System.out.println(cl2);ClassLoader cl3 = cl2.getParent();System.out.println(cl3);}}运行结果:////////////////////////////////////////////////////////////sun.misc.Launcher$AppClassLoader@1a0c10fsun.misc.Launcher$ExtClassLoader@e2eec8null//////////////////////////////////////////////////////////如果在上述程式中,如果您使用程式码:cl1.getClass.getClassLoader()及cl2.getClass.getClassLoader(),您会发现印出的都是null,这代表它们都是由Bootstrap Loader 所载入。这里也再次强调,类别载入器由谁载入(这句话有点诡异,类别载入器也要由类别载入器载入,这是因为除了Bootstrap Loader 之外,其余的类别载入器皆是由Java 撰写而成),和它的Parent 是谁没有关系,Parent 的存在只是为了某些特殊目的,这个目的我们将在稍後作解释。在此要请大家注意的是,AppClassLoader 和ExtClassLoader 都是URLClassLoader 的子类别。由於它们都是URLClassLoader 的子类别,所以它们也应该有URL 作为搜寻类别档的参考,由原始码中我们可以得知,AppClassLoader 所参考的URL 是从系统参数java.class.path 取出的字串所决定,而java.class.path 则是由我们在执行java.exe 时,利用_cp 或-classpath 或CLASSPATH 环境变数所决定。#p#副标题#e#用如下示例测试:public class AppLoader{public static void main(String[] args){String s = System.getProperty("java.class.path");System.out.println(s);}}/////////////////////////////////////////////////////////////////D:myappclassloadjava AppLoader.;D:myjavaTomcat5.0webappsaxisWEB-INFlibaxis.jar;D:myjavaTomcat5.0webappsaxisWEB-INFlibcommons-logging.jar;D:myjavaTomcat5.0webappsaxisWEB-INFlibcommons-discovery.jar;C:oracleora81jdbclibclasses12.zip;D:myjavaJDBCforSQLserverlibmssqlserver.jar;D:myjavaJDBCforSQLserverlibmsbase.jar;D:myjavaJDBCforSQLserverlibmsutil.jar;D:myjavaTomcat5.0commonlibservlet-api.jar;D:myjavaj2sdk1.4.2_04jrelibt.jar;C:sunappserverlibj2ee.jar;D:myjavaj2sdk1.4.2_04libjaxp.jar;D:myjavaj2sdk1.4.2_04libsax.jar;D:myappclassloadjava -classpath .;d:myapp AppLoader.;d:myapp/////////////////////////////////////////////////////////////////从这个输出结果,我们可以看出,在预设情况下,AppClassLoader 的搜寻路径为”.”(目前所在目录),如果使用-classpath 选项(与-cp 等效),就可以改变AppClassLoader 的搜寻路径,如果没有指定-classpath 选项,就会搜寻环境变数CLASSPATH。如果同时有CLASSPATH 的环境设定与-classpath 选项,则以-classpath 选项的内容为主,CLASSPATH 的环境设定与-classpath 选项两者的内容不会有加成的效果。至於ExtClassLoader 也有相同的情形,不过其搜寻路径是参考系统参数java.ext.dirs。系统参数java.ext.dirs 的内容,会指向java.exe 所选择的JRE 所在位置下的libext 子目录。Java.exe使用的JRE是在系统变量path里指定的,可以通过修改path从而修改ExtCLassLoader的搜寻路径,也可以如下命令参数来更改,java _Djava.ext.dirs=c:winnt AppLoader //注意 =号两边不能有空格。-D也不能和java分开。////////////////////////////////////////////////////////////////D:myappclassloadjava ExtLoaderD:myjavaj2sdk1.4.2_04jrelibextD:myappclassloadjava -Djava.ext.dirs=c:winnt ExtLoaderc:winnt////////////////////////////////////////////////////////////////最後一个类别载入器是Bootstrap Loader , 我们可以经由查询由系统参数sun.boot.class.path 得知Bootstrap Loader 用来搜寻类别的路径。该路径的修改与ExtClassLoader的相同。但修改后不影响Boots
2023-07-12 13:08:121

反射机制的Java中

Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。1.检测类:1.1 reflection的工作机制考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。import java.lang.reflect.*;public class DumpMethods {public static void main(String args[]) {try {Class c = Class.forName(args[0]);Method m[] = c.getDeclaredMethods();for (int i = 0; i < m.length; i++)System.out.println(m[i].toString());} catch (Throwable e) {System.err.println(e);}}}按如下语句执行:java DumpMethods java.util.Stack它的结果输出为:public java.lang.Object java.util.Stack.push(java.lang.Object)public synchronized java.lang.Object java.util.Stack.pop()public synchronized java.lang.Object java.util.Stack.peek()public boolean java.util.Stack.empty()public synchronized int java.util.Stack.search(java.lang.Object)这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。1.2 Java类反射中的主要方法对于以下三类组件中的任何一类来说 -- 构造函数、字段和方法 -- java.lang.Class 提供四种独立的反射调用,以不同的方式来获得信息。调用都遵循一种标准格式。以下是用于查找构造函数的一组反射调用:Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数,Constructor[] getConstructors() -- 获得类的所有公共构造函数Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关)Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关)获得字段信息的Class 反射调用不同于那些用于接入构造函数的调用,在参数类型数组中使用了字段名:Field getField(String name) -- 获得命名的公共字段Field[] getFields() -- 获得类的所有公共字段Field getDeclaredField(String name) -- 获得类声明的命名的字段Field[] getDeclaredFields() -- 获得类声明的所有字段用于获得方法信息函数:Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法Method[] getMethods() -- 获得类的所有公共方法Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法Method[] getDeclaredMethods() -- 获得类声明的所有方法1.3开始使用 Reflection:用于 reflection 的类,如 Method,可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。下面就是获得一个 Class 对象的方法之一:Class c = Class.forName(java.lang.String);这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句:Class c = int.class;或者Class c = Integer.TYPE;它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。第二步是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。 一旦取得这个信息,就可以进行第三步了——使用 reflection API 来操作这些信息,如下面这段代码:Class c = Class.forName(java.lang.String);Method m[] = c.getDeclaredMethods();System.out.println(m[0].toString());它将以文本方式打印出 String 中定义的第一个方法的原型。2.处理对象:如果要作一个开发工具像debugger之类的,你必须能发现filed values,以下是三个步骤:a.创建一个Class对象b.通过getField 创建一个Field对象c.调用Field.getXXX(Object)方法(XXX是Int,Float等,如果是对象就省略;Object是指实例).例如:import java.lang.reflect.*;import java.awt.*;class SampleGet {public static void main(String[] args) {Rectangle r = new Rectangle(100, 325);printHeight(r);}static void printHeight(Rectangle r) {Field heightField;Integer heightValue;Class c = r.getClass();try {heightField = c.getField(height);heightValue = (Integer) heightField.get(r);System.out.println(Height: + heightValue.toString());} catch (NoSuchFieldException e) {System.out.println(e);} catch (SecurityException e) {System.out.println(e);} catch (IllegalAccessException e) {System.out.println(e); } } }
2023-07-12 13:08:481

小学单词class书写格式?

对于这个小学单词来说。一般来说如果是写几班几年级的时候,通常class的C是要大写的。class还可以做等级来进行使用,这时候可以不用大写。
2023-07-12 13:09:032

c++如何访问其他class private数值

如果一个函数是另一个类的友元函数、或一个类的成员函数是另一个类的友元函数、或一个类是另一个类的友元类,就可以访问另一个类的私有成员。下面是一个例子:#include <iostream>using namespace std;class A;class B{public:void f(const A &a);static void sf(const A &a);};class C{public:void f(const A &a);static void sf(const A &a);};class A{private:string s="hello";static string ss;friend void f(const A &a);friend void B::f(const A &a);friend void B::sf(const A &a);friend class C;};string A::ss="world";void f(const A &a){cout<<a.s<<endl;cout<<a.ss<<endl;}void B::f(const A &a){cout<<a.s<<endl;cout<<a.ss<<endl;}void B::sf(const A &a){cout<<a.s<<endl;cout<<a.ss<<endl;}void C::f(const A &a){cout<<a.s<<endl;cout<<a.ss<<endl;}void C::sf(const A &a){cout<<a.s<<endl;cout<<a.ss<<endl;}int main(){A a;f(a);cout<<endl;B b;b.f(a);B::sf(a);cout<<endl;C c;c.f(a);C::sf(a);cout<<endl;return 0;}运行结果截图如下:
2023-07-12 13:09:112

CS1,6进局域网出现CLASS C提示 进不去..

这个问题我目前知道的唯一个解决方法 其他人说的我感觉都是片面的 不能直接解决问题 你先建一个地图 在在控制台里面输入sv_lan 1就好了我自己是这样搞好了的
2023-07-12 13:09:271

关于c#属性的问题

你连续使用了两个new关键字创建对象,没创建一个实例对象,没有在构造方法(也有人叫构造函数)中复制,dpHosTime的值都为默认的值(DateTime的最小值)。你声明了两次Tohistory对象的实例,第一个classB中赋值的,你在classB中可以取到值。你在classC中声明的实例,就是重新初始化了值,你并没有给属性复制啊,DateTime自己有默认值,就显示出来了。另外你这样如果是在一个方法内连续声明二个实例,也不能使用相同的实例名称啊,两个hostory在一个方法内可能报错啊。你可以这样写: Tohistory hostory=new Tohostory(); hostory=new Tohostory(); 这样不会报错。而你连续两个:Tohistory hostory=new Tohostory(); Tohistory hostory=new Tohostory();这样命名冲突了,编译都通过不了,就报错了哦!!!
2023-07-12 13:09:351

求助c++大神,以下程序段的语法错误,在继承与派生学到的

#include <iostream>using namespace std;class A{ public:int n;};class B:public A{};class C:public B{};class D:public B//,public C{ int getn(){return n;}};int main(){ D d; d.n=10; cout<<d.n<<endl; return 0;}
2023-07-12 13:09:453

C语言里面有Class吗,过多的Class 又是怎么封装的,class & class 有聚合,组合关系这么一说吗?

c语言没有class
2023-07-12 13:10:025

Java中反射的问题:Class c ,c.getDelaredClasses()和c.getClasses()两个方法有什么区别?

前者只是获取该类声明的方法,而后者还包括父类的。
2023-07-12 13:10:183

class中c,l,a,s,s分别代表什么

汗。。。谢谢楼主的知识共享。。。
2023-07-12 13:10:279

下面程序的执行结果是什么?为什么?

class Bclass C这就是运行时多态的概念,这个也是面向对象程序设计的精华
2023-07-12 13:10:432

家宽用户光猫设置安装CLASS-C光模块收光范围是多少

(-8,-27)。家宽用户光猫设置安装CLASS-C光模块收光范围是(-8,-27)。因为接收光的范围固定是-8,光猫显示发送-27,所以家宽用户光猫设置安装CLASS-C光模块收光范围是(-8,-27)。
2023-07-12 13:11:031

class中的c发什么音标?

class中的c发音标为k。
2023-07-12 13:11:091

c++语言中class是什么意思?

在C++ 语言中class是定义类的关键字,C++中也可以使用struct定义类。两者区别是,用class定义的类,如果数据成员或成员函数没有说明则默认为private(私有)的,而用struct定义的,默认为public(公共)的。   示例   #include   using namespace std;   class C {   public:   int getAge() const {   return age;   }   void setAge( int n ) {   age = n;   }   private:   int age;   };   int main() {   C c;   c.setAge( 22 );   cout << "My age: " << c.getAge() << endl;   return 0;  }作为面向对象程序设计的基础,掌握class的基本结构和特性是十分重要的。
2023-07-12 13:11:191

classa的格式范围

classa的格式范围有ClassA、ClassB、ClassC。1、ClassA:范围是1.0.0.0到126.0.0.0,其中第一个字节用于网络地址,剩下的三个字节用于主机地址。2、ClassB:范围是128.0.0.0到191.255.0.0,其中前两个字节用于网络地址,剩下的两个字节用于主机地址。3、ClassC:范围是192.0.0.0到223.255.255,其中前三个字节用于网络地址,剩下的一个字节用于主机地址。
2023-07-12 13:11:271

C++中 new 在什么时候用?? 为什么 Class c = new Class报错?

1>Class c=new Classnew Class 表示在堆栈中创建一个Class类变量,而要访问这个变量,必须通过指针来访问,因此应该改为:Class *c=new Class;2>请高手解释下 Class *c = new Class ; Class *c ; Class c ;第一个是在堆栈中创建Class类型的变量并用指向Class类变量的指针指向它第二个是创建一个指向Class类型变量的指针第三个是创建Class类型的变量3>建议在类、变量、函数名等命名时尽量不要与关键字相似,最好去找一些命名规则来看一下,其实命名是很有讲究的,像你所提问题中的Class最好改为CClass这是因为类的命名规则一般前面都会加一个“C”以表示这是一个类。
2023-07-12 13:11:371

java中clss类的一个让我困惑的问题

new 出来的是实例,而这个clazz 是类类型的一个对象而已。
2023-07-12 13:11:534

FCC 47 CFR PART 15,CLASS C,EN 300328是什么意思详细点谢谢诶

FCC 47 CFR PART 15,CLASS C 美国电磁兼容部分认证FCC里的标准EN 300328 欧盟CE认证里的标准按标准来看,你的产品应该是IT类的。UL 60950-1:2003 美国安全认证UL的标准csa-c22.2 加拿大安全认证CSA的标准ice 60950-1 国际标准IEC
2023-07-12 13:12:012

c++ classA{public:A(){cout

定义一个class B 为cB
2023-07-12 13:12:113

c++中class C:public B,public A { B b; public: C( ) {是什么意思

类C同时公开继承A与B其中C中有一个私有成员变量是B类型的对象b;还有一个无参构造函数C()。
2023-07-12 13:12:341

C语言中的“class”是什么意思

C没有class,这是C++中的系统定义类型,是类的意思
2023-07-12 13:12:451

class C extends B { public C() { super() } } 是什么意思呢

C类继承了B类,C的构造函数会运行B的构造函数。
2023-07-12 13:12:521

奔驰C Class的Class是什么意思

级别~~~~~~~
2023-07-12 13:13:037