JAVA中的嵌套调用

今天发现有写成这样的代码,我简单表示如下


/**
  * 嵌套调用演示例子
  * @author zhouwei
  */ 
public class T2 extends T{

	@Override
	protected void test() {
		System.out.println("in T2 class");
		
	}
    
	public static void main(String[] args) {
		T  t = new T2();
		t.calc();
	}
}


abstract class T{
	static int flag=0;
	void calc(){
		System.out.println("in T class");
		test();
		T t = new T2();
		t.calc();
	}
protected abstract void test();}


这实际构成了一个死循环,实际代码比这个要复杂.T2 调用calc,calc生成T2对象,T2对象又调用calc


需要修改下,修正死循环


/**
  * 嵌套调用演示例子
  * @author zhouwei
  */ 
public class T2 extends T{

	@Override
	protected void test() {
		System.out.println("in T2 class");
		
	}
    
	public static void main(String[] args) {
		T  t = new T2();
		t.calc();
	}
}


abstract class T{
	static int flag=0;
	void calc(){
		System.out.println("in T class");
		test();
		if(flag ==0 ){
			flag =1;
			T t = new T2();
			t.calc();
		}
	}
	protected abstract void test();
}






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java自带的ZipInputStream类可以用于解压缩zip文件,而对于嵌套的zip文件,我们可以通过递归调用ZipInputStream来实现解压缩。 以下是一个示例代码,用于解压缩一个包含嵌套zip文件的zip文件: ```java import java.io.*; import java.util.zip.*; public class NestedZipExtractor { public static void main(String[] args) throws IOException { String zipFilePath = "path/to/nested/zip/file.zip"; String outputFolder = "path/to/output/folder"; unzipNestedZipFiles(zipFilePath, outputFolder); } public static void unzipNestedZipFiles(String zipFilePath, String outputFolder) throws IOException { File outputDir = new File(outputFolder); if (!outputDir.exists()) { outputDir.mkdir(); } FileInputStream fis = new FileInputStream(zipFilePath); ZipInputStream zis = new ZipInputStream(fis); ZipEntry zipEntry = zis.getNextEntry(); byte[] buffer = new byte[1024]; while (zipEntry != null) { String fileName = zipEntry.getName(); File newFile = new File(outputFolder + File.separator + fileName); if (zipEntry.isDirectory()) { newFile.mkdirs(); } else { FileOutputStream fos = new FileOutputStream(newFile); int len; while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } fos.close(); // 如果解压出来的是一个zip文件,则递归调用解压函数 if (fileName.endsWith(".zip")) { unzipNestedZipFiles(newFile.getAbsolutePath(), outputFolder + File.separator + fileName.replace(".zip", "")); } } zis.closeEntry(); zipEntry = zis.getNextEntry(); } zis.close(); } } ``` 这段代码会递归地解压缩所有嵌套的zip文件,并将解压后的文件保存到指定的输出文件夹。注意,虽然这段代码处理了嵌套的zip文件,但是它并没有处理嵌套的压缩文件格式,如tar.gz等。如果需要处理这些格式的文件,可以根据需要进行扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值