java产生对象的几种方式
用关键字new生成对象:这是最常用的一种方式,例如 new String("hello")用new生成对象的特点是,这个对象的类必须在编译时就在classpath中,如果没有特别的理由和要求,这是我们生成一个对象的第一选择;
Class.forName(String className)。例如Class c = Class.forName("com.company.jdbc.Driver");这种方法的特点是在编译的时候不需要包含这个类在classpath中,而可以推迟到运行时再到claspath中找。这种方式的典型运用时加载JDBC驱动程序的时候。因为不同的数据库有不同的JDBC驱动程序,所以对于需要得到某种数据库连接的应用程序,可能需要到运行时才知道连接的是哪种数据库,所以采用这种方式加载数据库驱动程序。而且这用有利于编写通用数据库的连接池程序,因为一个数据库的连接池并不需要在编译时就需要各种数据库的驱动程序的类;
ClassLoader.loadClass(String name);这种方式更加灵活,它不仅可以从classpath中加载类,而且也可以在运行时通过自定义一个ClassLoader来加载类。例如可以从某个http或者ftp服务器加载类,更可以从任意的byte[]来加载类。如果我们写一个自己的类加载器MyClassLoader extends ClassLoader,那么我们可以通过重载父类中的protected Class findClass(String name)方法来让它具有我们期待的行为,ClassLoader的loadClass方法会调用findClass来的到一个Class类型的对象,而findClass可以通过调用Class defineClass(String name, byte[] b, int off, int len)来通过byte[]构造一个Class类型的对象。这种方式的特点是即使载运行时也不需要这个类在classpath中。
使用对象克隆:Object 的clone方法
使用工厂设计模式产生(类似用接口向上转型)
相关文档:
1. Java 命名约定
除了以下几个特例之外,命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
1.1 一般概念
* 尽量使用完整的英文描述符
* 采用适用于相关领域的术语
* 采用大小写混合使名字可读
* 尽量少用缩写,但如果 ......
项目中有的文件夹原来是svn版本控制的,现在不想控制了,就像把这个文件夹传给别人或者自己备份,但是看到那么多.svn文件夹实在不舒服,写了下面的简单程序用来删除这些文件,以后需要删除的话,设置好文件夹路径和要删除的文件夹名字跑一下就行了。
import java.io.File;
/*
* To change this template, choose Tools ......
EJB: Enterprise JavaBeans 企业JavaBean组件
IDL: Interface Definition Language 接口定义语言
J2EE CA:J2EE Connector Architecture J2EE 连接器架构
JAAS : The Java Authenticat ......
sqlite数据库第三方java扩展包下载地址:http://www.zentus.com/sqlitejdbc/
有2个包,一个是nested(嵌入式的),一个是native(本地的)。
区别在于:nested 不需要额外的dll文件,但是速度慢。native需要一个额外的dll文件,速度很快。
1.使用nested包:sqlitejdbc-v037-nested.jar
java代码:
java 代码
packa ......
import java.io.IOException;
public class test {
/**
* 编码
* @param filecontent
* @return String
*/
public static String encode(byte[] bstr){
return new sun.misc.BASE64Encoder().encode(bstr);
}
/**
* 解码
* @param filecontent
* @return string
*/
public static ......