- 创建属性配置文件
package com.IO;
import java.util.ResourceBundle;
public class IOTest01 {
/*
资源绑定器
用户名 密码 MySQL 的 用户名 密码 访问地址
配置 到 集合名 . properties
属性配置文件
. properties
name=yanyu
通过 name 去拿
password=123
name = value
类似于键值对
读取 db.properties 的内容
* */
public static void main(String[] args) {
// RB
ResourceBundle bundle = ResourceBundle.getBundle("com/IO/db");
// System.out.println(bundle);//
//
String name = bundle.getString("name");// CTRL + alt + v
// key value 键值对 通过 key 获取 value
System.out.println(name);//yanyu
System.out.println(bundle.getString("password"));//123
}
}
利用反射创建对象
name=nbjgnjf
# = ?? ?key ?? ? value
password=789
package com.IO;
import java.util.ResourceBundle;
public class IOTest01 {
/*
资源绑定器
用户名 密码 MySQL 的 用户名 密码 访问地址
配置 到 集合名 . properties
属性配置文件
. properties
name=yanyu
通过 name 去拿
password=123
name = value
类似于键值对
读取 db.properties 的内容
* */
public static void main(String[] args) {
// RB
ResourceBundle bundle = ResourceBundle.getBundle("com/IO/db");
// System.out.println(bundle);//
//
String name = bundle.getString("name");// CTRL + alt + v
// key value 键值对 通过 key 获取 value
System.out.println(name);//yanyu
System.out.println(bundle.getString("password"));//123
}
}
package com.reflect;
public class ReFlect01 extends Animal{
/* 。Java 编译 。class
反射 可以 操作字节码 反射 操作对象 字节码
利用 字节码 进行反向编译u 吧 字节码 ---》 .java
* */
public static void main(String[] args) {
}
}
package com.reflect;
import java.util.Objects;
public class ReFlect02 {
String name;
public ReFlect02(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ReFlect02() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ReFlect02 reFlect02 = (ReFlect02) o;
return Objects.equals(name, reFlect02.name);
}
@Override
public String
toString() {
return "ReFlect02{" +
"name='" + name + '\'' +
'}';
}
@Override
public int hashCode() {
return Objects.hash(name);
}
public int sum(int num1 ,int num2){
System.out.println("hbntrg");
return num1 + num2;
}
/* static 类<?> forName(String className) forName(静态方法)
是 Class 这个类的方法 Class.
返回与给定字符串名称的类或接口相关联的 类对象。
*/
public static void main(String[] args) {
ReFlect02 rf;
try {
Class c = Class.forName("com.reflect.ReFlect02");// alt enter
// class com.reflect.ReFlect02
// 利用反射 创建 ReFlect02 的对象 ,调用对应的方法
/*
* */
// System.out.println(aClass);
// 创建 对象
ReFlect02 o = (ReFlect02) c.newInstance();
o.sum(1,2);
ReFlect02 reFlect02 = new ReFlect02();
System.out.println(reFlect02.name);
System.out.println(o.name);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
package com.reflect;
public class ReFlect03 {
String name;
public static void main(String[] args) {
try {
Class c = Class.forName("com.reflect.ReFlect03");
ReFlect03 o =(ReFlect03) c.newInstance();
System.out.println(o.name);//null
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}