反射和注解

本文详细介绍了Java中的反射机制,包括如何在运行时获取类信息、创建对象、调用方法等。同时,文章讲解了注解的分类、功能及常见使用,如@Override、@Deprecated和@SuppressWarnings。此外,还探讨了元注解的作用。通过对反射和注解的深入理解,读者能够更好地掌握Java编程的高级特性。
摘要由CSDN通过智能技术生成
import java.io.*;
/*
1,建立目的目录。
2,遍历源目录。
3,遍历过程中,创建文件或者文件夹。
原理:其实就是改变了源文件或者目录的目录头。
*/
class  CopyDir
{
private File sDir,dDir,newDir;
CopyDir(String s,String d)
{
this(new File(s),new File(d));
}
CopyDir(File sDir,File dDir)//c:\\Test  d:\\abc
{
this.sDir = sDir;
this.dDir = dDir;
}
public void copyDir()throws IOException
{
//是创建目的目录。也就是创建要拷贝的源文件夹。Test
//获取源文件夹名称。
String name = sDir.getName();
//通过该名称在目的目录创建该文件夹,为了存放源文件夹中的文件或者文件夹。
//将目的目录和源文件夹名称,封装成File对象。
newDir = new File(dDir,name);
//调用该对象的mkdir方法。在目的目录创建该文件夹。d:\\abc\\Test
newDir.mkdir();//

//遍历源文件夹。
listAll(sDir);
}
/*
将遍历目录封装成方法。
在遍历过程中,遇到文件创建文件。
遇到目录创建目录。
*/
private void listAll(File dir)throws IOException
{
File[] files = dir.listFiles();
for(int x=0; x<files.length; x++)
{
if(files[x].isDirectory())
{
createDir(files[x]);//调用创建目录的方法。
listAll(files[x]);//在继续进行递归。进入子级目录。
}
else
{
createFile(files[x]);//调用创建文件的方法。
}
}
}
/*
copy目录。通过源目录在目的目录创建新目录。
*/
private void createDir(File dir)
{
File d = replaceFile(dir);
d.mkdir();
}
/*
copy文件。
*/
private void createFile(File file)throws IOException
{
File newFile = replaceFile(file);
//copy文件是一个数据数据传输的过程。需要通过流来完成。
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(newFile);
byte[] buf = new byte[1024*2];
int num = 0;
while((num=fis.read(buf))!=-1)
{
fos.write(buf,0,num);
}
fos.close();
fis.close();
}
/*
替换路径。
*/
private File replaceFile(File f)
{
//原理是:将源目录的父目录(C:\\Tset),替换成目的父目录。(d:\\abc\\Test)
String path = f.getAbsolutePath();//获取源文件或者文件夹的决定路径。
//将源文件或者文件夹的绝对路径替换成目的路径。
String newPath = path.replace(sDir.getAbsolutePath(),newDir.getAbsolutePath());
//将新的目的路径封装成File对象
File newFile = new File(newPath);
return newFile;
}
}

//主函数调用执行
import java.io.*;
class  CopyDirDemo
{
public static void main(String[] args)throws IOException 
{
//File s = new File("c:\\Test");
//File d = new File("d:\\abc");
new CopyDir("c:\\Test","d:\\abc").copyDir();
//System.out.println("Hello World!");
}
}

反射:
Java反射机制,可以实现以下功能:
①在运行时判断任意一个对象所属的类;
②在运行时构造任意一个类的对象;
③在运行时判断任意一个类所具有的成员变量和方法;
④在运行时调用任意一个对象的方法;
⑤生成动态代理
3.1. 获取Class对象
Class是一切的源头,所有伟大的事业都有一个不起眼的
开头。而反射有三种出场方式
第一种方式: 对象.class

Source s=new Source();
Class<?>c1=s.getClass();
System.out.println(c1.getName());

第二种方式: 类.class

Class<?>c2=Source.class;
System.out.println(c2.getName());

第三种方式(推荐方式): Class.forName()

Class<?>
c3=Class.forName("com.shsxt.ref.simple.Source"
);
System.out.println(c3.getName());

注解:
2. 注解的分类
根据注解参数的个数分类
1)、标记注解:一个没有成员定义的Annotation类型被
称为标记注解。
2)、单值注解:只有一个值
3)、完整注解:拥有多个值
根据注解使用方法和用途分类
1)、JDK内置系统注解
2)、元注解
3)、自定义注解
3.1. @Override
限定重写父类方法,若想要重写父类的一个方法时,需
要使用该注解告知编译器我们正在重写一个方法。如此
一来,当父类的方法被删除或修改了,编译器会提示错
误信息;或者该方法不是重写也会提示错误。
3.2. @Deprecated
标记已过时,当我们想要让编译器知道一个方法已经被
弃用(deprecate)时,应该使用这个注解。Java推荐在
javadoc中提供信息,告知用户为什么这个方法被弃用
了,以及替代方法是什么
3.3. @SuppressWarnings
抑制编译器警告,该注解仅仅告知编译器,忽略它们产
生了特殊警告。如:在java泛型中使用原始类型。其保
持性策略(retention policy)是SOURCE,在编译器中将被
丢弃。
4.2. 元注解
元注解的作用就是负责注解其他注解。Java5.0定义了4
个标准的 meta-annotation 类型,它们被用来提供对其
它 annotation类型作说明。Java5.0定义的元注解有四
个,这些类型和它们所支持的类在java.lang.annotation
包中可以找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值