栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-课云OSS项目总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-课云OSS项目总结

客户端和服务端是两个大项目,但是客户端需要连接上服务端。

右键客户端的项目--Build path--Configure Build path--projects--add--选择要添加的项目

全类名:右键类名--Copy Qualified Name


简单工厂模式:帮助我们创建符合要求的对象。

工厂要生产合格的产品。

  1. 产品规范:接口、抽象类
  2. 产品:实现产品规范
  3. 工厂:生产产品
  4. 客户:练习工厂生产产品

反射

// 3种方法获取字节码(Class)对象
// 根据对象获取
User user = new User();
Class class1 = user.getClass();
		
// 根据类获取
Class class2 = User.class;
		
// 根据全类名(包名+类名)获取
Class class3 = Class.forName("entity.User");
		
System.out.println(class1);
System.out.println(class2);
System.out.println(class3);
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

// 使用反射创建类的对象
public class Demo01 {

	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		// 获取字节码对象
		Class class1 = Class.forName("entity.User");
		
		// 获取构造方法
		// 获取所有非私有的构造
//		Constructor[] constructors = class1.getConstructors();
//		for (Constructor constructor : constructors) {
//			System.out.println(constructor);
//		}
		// 获取所有该类中声明的构造(包括私有)
//		Constructor[] constructors = class1.getDeclaredConstructors();
//		for (Constructor constructor : constructors) {
//			System.out.println(constructor);
//		}
		
		// 根据构造的参数类型列表,来获取指定构造
		Constructor constructor1 = class1.getConstructor();// 无参构造
		Constructor constructor2 = class1.getConstructor(String.class);// 带字符串参数的公共构造
		Constructor constructor3 = class1.getDeclaredConstructor(String.class, String.class);// 带两个字符串参数的私有方法
		System.out.println(constructor1);
		System.out.println(constructor2);
		System.out.println(constructor3);
		
		// 创建对象
		Object newInstance1 = constructor1.newInstance();
		Object newInstance2 = constructor2.newInstance("admin");
		// 暴力反射(私有的创建了对象也无法访问)
		constructor3.setAccessible(true);
		Object newInstance3 = constructor3.newInstance("admin", "123456");
	}

}
import java.lang.reflect.Method;

public class Demo01 {

	public static void main(String[] args) throws Exception {
		// 获取字节码对象
		Class class1 = Class.forName("entity.User");
		
		// 获取方法
		// 获取所有-非私有-的方法(包含继承来的方法)
//		Method[] methods = class1.getMethods();
		// 获取所有-该类中-的方法(包含私有的)
//		Method[] methods = class1.getDeclaredMethods();
//		for (Method method : methods) {
//			System.out.println(method);
//		}
		
		// public java.lang.String entity.User.getUsername()
		Method method = class1.getMethod("getUsername");
		System.out.println(method);
		
		// public void entity.User.setUsername(java.lang.String)
		Method method2 = class1.getMethod("setUsername", String.class);
		System.out.println(method2);
		
		// p1:调用该方法的对象
		// p2:调用该方法时传入的参数
		// Java快速通过字节码对象直接创建无参方法的对象
		Object obj = class1.newInstance();
		// 如果调用没有返回值的方法,返回的是null
		Object invoke = method2.invoke(obj, "小明");
		System.out.println(invoke);
		
		// 如果调用的有返回值的方法,返回的是对应的返回值
		Object invoke2 = method.invoke(obj);
		System.out.println(invoke2);
	}

}
// 上边反射要使用的类
public class User {

	private String username;
	public String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	private String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public User() {
		System.out.println("无参构造");
	}
	private User(String username, String password) {
		this.username = username;
		this.password = password;
		System.out.println("有参构造");
	}
	public User(String username) {
		this(username, null);
	}
}

properties:雷同键值对(key-value)

主要用于读取Java的配置文件。

// 先创建properties文件
# 服务端端口
server.port=6666
#文件信息
server.File=XML/fileInfos.xml
#用户信息
server.user=XML/users.xml
#服务信息
server.server=XML/servers.xml




// 使用properties文件步骤
import java.io.FileInputStream;
import java.util.Properties;

public class properties {

	public static String get(String key) throws Exception {
		// 创建文件
		Properties prop = new Properties();
		// 读取文件
		prop.load(new FileInputStream("XML/config.properties"));
		// 根据键取值
		return prop.getProperty(key);
	}
	
	public static int getInt(String key) throws Exception {
		return Integer.parseInt(get(key));
	}
}

魔法值

主要用于赋值常量,改的时候改一处即可。(首先创造一个常量类,然后调用)

public class constains {
	// 内部静态常量类(服务类)
	public static class server {
		public static final String START = "start";
		public static final String LOGIN = "login";
		public static final String REGISTER = "register";
		public static final String GET_FILE_LIST = "getFile";
		public static final String DOWNLOAD = "download";
	}
}

分层优化思想(DAO层)

 

 优化主要代码:否则代码中的主要代码(处理业务)偏少,判断或其他代码太多。


API知识点:

集合转数组:集合名.toArray(new int[] {})   --------- 括号里只是表示转成什么类型的数组

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号