java 反射
通过反射创建新类示例的两种方式及比较
作者BLOG:http://blog.csdn.net/fenglibing
通过反射创建新的类示例,有两种方式:
Class.newInstance()
Constructor.newInstance()
以下对两种调用方式给以比较说明:
l Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数;而Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数。
l Class.newInstance() 抛出所有由被调用构造函数抛出的异常。
l Class.newInstance() 要求被调用的构造函数是可见的,也即必须是public类型的; Constructor.newInstance() 在特定的情况下,可以调用私有的构造函数。
Class A(被调用的示例):
view plaincopy to clipboardprint?
public class A {
private A(){
System.out.println("A's constructor is called.");
}
private A(int a,int b){
System.out.println("a:"+a+" b:"+b);
}
}
public class A {
private A(){
System.out.println("A's constructor is called.");
}
private A(int a,int b){
System.out.println("a:"+a+" b:"+b);
}
}
Class B(调用者):
view plaincopy to clipboardprint?
import java.lang.reflect.Constructor;
import static java.lang.System.out;
public class B {
public static void main(String[] args) {
B b=new B();
out.println("通过Class.NewInstance()调用私有构造函数:");
b.newInstanceByClassNewInstance();
out.println("通过Constructor.newInstance()调用私有构造函数:");
b.newInstanceByConstructorNewInstance();
}
/*通过Class.NewInstance()创建新的类示例*/
private void newInstanceByClassNewInstance(){
try {
/*当前包名为reflect,必须使用全路径*/
A a=(A)Class.forName("reflect.A").newInstance();
相关文档:
【人物小传】
James Gosling (1955.5.19-)加拿大出生的程序员,美国工程院院士。以“Java 技术之父”而闻名于世。他是Java 技术的创始人,亲手设计了Java语言,并开发了Java编译器和Java虚拟机,使Java成为了世界上最流行的开发语言。
James Gosling先生于1977年获得加拿大卡尔加里大学计算机科学学士学 ......
廖洪亮 2010/4/13
概述
在实际的项目中,可能会遇到这样的问题:A服务器上的应用程序需要访问B服务器上的access数据库(可以使用虚拟机模拟A、B服务器进行测试)。而access数据库是文件类型的,不同计算机间需要指定文件访问权限,增加了程序的复杂度。本文将从一个实例来介绍一种简单实用的方法。该实例使用的方法来自Inte ......
1.创建测试表
create table users(
userid int primary key,
username varchar2(20),
userpwd varchar2(20)
);
insert into users values(1,'test','test');
insert into users values(2,'test','test');
insert into users values(3,'test','test');
insert into users values(4,'test','test');
insert i ......
JAVA Calendar详解
(在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读)
究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢?
比如有:
月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28 ......
OOP的特性主要有:1、封装;2、继承;3、多态。下面从这几个方面具体阐述。
1、封装
封装能将类的具体信息隐藏起来,使得数据得到保护。其具体实施主要是依靠访问控制机制权限,其权限主要有四种:1、private;2、default(C++没有这种权限);3、protected;4、public。在这四种权限下的数据在外界的可见性不同。Private ......