package JpaProject;
/**
* 枚举测试联系
*
* @class Sex
* @description
* @author 李智慧
* @copyRight copyright(c) 2011 广东南航易网通电子商务有限公司,Rights Reserved
* @time Dec 7, 2011 2:43:17 PM
*/
public enum Bank {
ABC("中国农业银行"), PSBC("中国邮政储蓄银行"), CMB("中国招商银行"), F, A, M, I, L, Y;
private String name;
public String getName() {
return name;
}
private String fullName;
// 构造方法
Bank(String fullName) {
this.fullName = fullName;
}
public int getIndex() {
return ordinal() + 1;
}
Bank() {
}
public String getFullName() {
return fullName;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Bank.PSBC.getFullName());
if (Bank.M.toString().equals("M")) {
System.out.println("aaaaaaaaaa");
}
System.out.println(Bank.I.getIndex());
}
}
|
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
/**
* 测试获取properties配置文件的内容,一定要存在这样的properties
* 要显示具体的数据
* @class PropertiesBean
* @description
* @author 李智慧
* @copyRight copyright(c) 2011 广东南航易网通电子商务有限公司,Rights Reserved
* @time Dec 6, 2011 4:30:24 PM
*/
public class PropertiesBean {
public static void main(String[] args) {
// System.out.println(PropertiesBean.class.getClassLoader().getResource("config.properties"));
String result = PropertiesBean.readPropertiesValue("config.properties","love");
System.out.println(result);
Boolean b = PropertiesBean.writePropertiesValue("config.properties", "职业", "微软集团总裁");
System.out.println(b);
}
/**
* 获取配置文件 对应key的value值。
*
* @param propertiesName
* 具体配置文件的名称,注意:此例子的配置文件是放置在classes目录下。
* @param key
* 对应key值
* @return value值
*/
public static String readPropertiesValue(String propertiesName,String key){
String result = "";
Properties properties = new Properties();
InputStream inputStream = null;
try{
//方式一:使用getResourceAsStream获取数据流
inputStream = PropertiesBean.class.getClassLoader().getResourceAsStream(propertiesName);
//方式二:使用getResource获取url地址,然后解析出对应的绝对路径。
// inputStream = new BufferedInputStream (new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", "")));
properties.load(inputStream);
//修改编码,解决中文乱码问题
// result = new String(properties.getProperty(key).toString().getBytes("ISO8859_1"),"gbk");
if(properties.containsKey(key)){
result = properties.getProperty(key).toString();
}
}catch (Exception e) {
result = "读取配置文件信息出现错误。";
if(inputStream != null){
try {
inputStream.close();
} catch (IOException e1) {
result = "关闭输出流出现错误。";
}
}
}
return result;
}
/**
* 修改对应的键值对(如果没有的话,会是新增)
*
* @param propertiesName
* 配置文件的名称,注意内容同上。
* @param key
* 对应的键值
* @param value
* 对应的value值
* @return 返回是否操作正確
*/
public static boolean writePropertiesValue(String propertiesName,String key,String value){
boolean b = false;
OutputStream outputStream = null;
InputStream fis = null;
Properties properties = new Properties();
try{
//打开输入流的作用是保存没有被修改的键值对,如果没有下面两行,对应的配置文件中就只有设置的键值对了。
fis = new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
//从输入流中读取属性列表(键和元素对)
properties.load(fis);
outputStream = new FileOutputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
properties.setProperty(key, value);
properties.store(outputStream, "修改配置文件信息");
b = true;
}catch (Exception e) {
System.out.println("写入配置文件出现错误。"+e.getMessage().toString());
}finally{
try {
outputStream.close();
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("关闭输出出入流出现问题。");
}
}
return b;
}
}
|
很简单的注解实例,直接见代码,之前也是不理解,慢慢想,敲敲就会了。
package org.keyuan.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
/*
* 元注解@Target,@Retention,@Documented,@Inherited
*
* @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:
* ElemenetType.CONSTRUCTOR 构造器声明
* ElemenetType.FIELD 域声明(包括 enum 实例)
* ElemenetType.LOCAL_VARIABLE 局部变量声明
* ElemenetType.METHOD 方法声明
* ElemenetType.PACKAGE 包声明
* ElemenetType.PARAMETER 参数声明
* ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
*
* @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:
* RetentionPolicy.SOURCE 注解将被编译器丢弃
* RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃
* RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
*
* @Documented 将此注解包含在 javadoc 中
*
* @Inherited 允许子类继承父类中的注解
*
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
/*
* 定义注解 Test
* 注解中含有两个元素 id 和 description
* description 元素 有默认值 "no description"
*/
public @interface Test {
public int id();
public String description() default "no description";
}
package org.keyuan.annotation;
import java.lang.reflect.Method;
/**
* 简单实例操作注解
* @class AnnotationExample
* @description
* @author 李智慧
* @copyRight copyright(c) 2011 广东南航易网通电子商务有限公司,Rights Reserved
* @time Dec 6, 2011 2:49:56 PM
*/
public class AnnotationExample {
/*
* 被注解的三个方法
*/
@Test(id = 1, description = "hello method_1")
public void method_1() {
}
@Test(id = 2)
public void method_2() {
}
@Test(id = 3, description = "last method")
public void method_3() {
}
/*
* 解析注解,将Test_1类 所有被注解方法 的信息打印出来
*/
public static void main(String[] args) {
Method[] methods = AnnotationExample.class.getDeclaredMethods();
for (Method method : methods) {
/*
* 判断方法中是否有指定注解类型的注解
*/
boolean hasAnnotation = method.isAnnotationPresent(Test.class);
if (hasAnnotation) {
/*
* 根据注解类型返回方法的指定类型注解
*/
Test annotation = method.getAnnotation(Test.class);
System.out.println("Test( method = " + method.getName()
+ " , id = " + annotation.id() + " , description = "
+ annotation.description() + " )");
}
}
}
}
|