易截截图软件、单文件、免安装、纯绿色、仅160KB

Java URLClassLoader

Closing a URLClassLoader
By Michael McMahon
 
Complex Java programs, such as application servers, sometimes create their own class loaders using the URLClassLoader type. With URLClassLoader, applications can load classes and resources from a search path of URLs. The following URL types are supported:
file: (loads from file-system directories)
jar: (loads from JAR files)
http: (loads from http servers)
 
 
A frequent problem has been how to support updated implementations of the classes and resources loaded from a particular codebase, and in particular from JAR files. In principle, once the application clears all references to a loader object, the garbage collector and finalization mechanisms will eventually ensure that all resources (such as the JarFile objects) are released and closed.
 
The application can then replace the JAR file, and create a new URLClassLoader instance to load from the same location, but this time using the new implementation of the classes/resources.
 
However, since it can't be predicted exactly when finalization and garbage collection will occur, this causes problems for applications which need to be able to do this in a predictable and timely fashion. It is a particular problem on Windows, because open files cannot be deleted or replaced.
 
To alleviate this problem, URLClassLoader has acquired a new method called close(). It has been implemented since Build 48 of JDK7.
 
The close() method effectively invalidates the loader, so that no new classes can be loaded from it. It also closes any JAR files that were opened by the loader. This allows the application to delete or replace these files and, if necessary, create new loaders using new implementations.
 
The new method follows the familiar "Closeable" pattern, and URLClassLoader now implements the Closeable interface, which defines URLClassLoader.close(). The following sample code shows how one might use the method.
 
&n


相关文档:

Java 继承小例

看看下面程序将输出什么结果:
/**
* ShowExtending
* 演示继承时的现象
*/
class SupCls {
static String s1 = "父类类变量s1";
String s2 = "父类实例变量s2";
SupCls(){
System.out.println("父类构造器被访问");
}
public static void f1(){ ......

Java之增强for循环

语法:
for ( type 变量名:集合变量名 )  { … } 
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
public class AdvancedFor {
public static void main(String[] arg ......

Java之Override Overload之间的区别


override是覆写,对应于OO编程的继承特性,意思就是在子类中重写父类中的方法;   
overload是重载,对应于OO编程的多态特性,意思就是在同一个类中同样名称的多个方法, 这多个方法之间的区别在他们的参数列不同。
例如:
public interface UserDao {
public void save(); ......

二、(1)数据层 有关Java代码

l组件从功能上分可分为:
   1) 顶层容器:JFrame,JApplet,JDialog,JWindow
   2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar 
   3) 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.
1.JFrame的用法
1) 用getContentPane( )方法获得JFrame的 ......

java序列化与反序列化


import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/************************* ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号