「java自动封装」java封装的使用方法
今天给各位分享java自动封装的知识,其中也会对java封装的使用方法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、请问java中,Double类型和double有什么不同?能否转换?
- 2、Java语言自动化脚本中可以封装多个request然后进行调用?
- 3、JAVA封装字段快捷键或快速封装是哪个?
- 4、设计一个方法,根据提供的str字符串信息自动封装成java对象?
请问java中,Double类型和double有什么不同?能否转换?
Double是类double是基础数据类型。Double类型是double的包装类,在JDK1.5以后,二者可以直接相互赋值,称为自动拆箱和自动装箱。如果是这样,可以用Double中的方法,将包装类转为基本数据类型。
可以转换的。
double和float的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double和float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
类型比特数有效数字数值范围
float326-7-3.4*10(-38)~3.4*10(38)
double6415-16-1.7*10(-308)~1.7*10(308)
longdouble12818-19-1.2*10(-4932)~1.2*10(4932)
简单来说,Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,但在我的电脑且VC++6.0平台中默认显示同样是6位有效数字。
double类型的包装类是Double;
备注:double是基本数据类型,Double是对象。但是现在的jdk1.5以上版本都是可以直接进行转换的,java会自动进行封装,所有使用上的区别不是很大的。
Java语言自动化脚本中可以封装多个request然后进行调用?
可以。
一个代码可以封装多个resquest进行调用,只是在调用的过程中必须保证方法名称和调用的方式一致。
封装的概念来自对面向对象的编程模式 比如说一个方法,你把他放到一个类里面, 下次如果别的地方要用到的话,直接调用这个方法就行了,不用再重新编写。
JAVA封装字段快捷键或快速封装是哪个?
快捷键:shift + alt + s。
为了实现良好的封装,需要从两个方面考虑:
把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问。
把方法暴露出来,让方法控制这些成员变量进行安全的访问和操作。因此,封装就有两个含义:把该隐藏的隐藏起来,把该暴露的暴露出来。
实现封装的方式:使用访问控制符:
java提供了三种访问权限,准确的说还有一种是默认的访问权限,加上它一共四种。
private 在当前类中可访问
default 在当前包内和访问
protected 在当前类和它派生的类中可访问
public 公众的访问权限,谁都能访问
扩展资料
封装的意义:
1、封装可以隐藏实现的细节;
2、让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问;
3、方便数据检查,有利于于保护对象信息的完整性;
4、便于修改,提高代码的可维护性。
包对.java源文件没有作用,只对.class字节码文件起作用。包相当于一个字节码的相对路径。例如上例中PackageTest.class的绝对路径就是:G:\p1\p2\p3
引入包可以防止文件名之间的冲突(例如一个公司的网站域名为:,则这个公司的程序员可以将所有的包设置为cn.def.abc)。
设计一个方法,根据提供的str字符串信息自动封装成java对象?
方法工具
package com;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
ObjectOne objectOne = (ObjectOne)createObject("className:com.ObjectOne;name:李某某;age:12");
System.out.println(objectOne.getName() + "-" + objectOne.getAge());
ObjectTwo objectTwo = (ObjectTwo)createObject("className:com.ObjectTwo;address:厦门;no:A101");
System.out.println(objectTwo.getAddress() + "-" + objectTwo.getNo());
}
public static Object createObject(String str) {
if (isBlank(str)) {
throw new IllegalArgumentException("参数为空");
}
String className = null;
// 属性值map
MapString, String param = new HashMap(16);
try {
int index = 0;
for (String s : str.split(";")) {
String[] split = s.trim().split(":");
if (index == 0 isBlank(split[0])
isBlank(split[1]) !"className".equals(split[0])) {
throw new IllegalArgumentException("参数格式错误");
}
if (index == 0) {
className = split[1];
index++;
continue;
}
// 属性值添加到map
// 处理字符串中的属性值 成setXx
param.put("set" + preWorkUpperCase(split[0]), split[1]);
index++;
}
} catch (Exception e) {
throw new IllegalArgumentException("参数格式错误");
}
Class clazz;
Object obj;
try {
//反射 new 对象
clazz = Class.forName(className);
obj = clazz.newInstance();
} catch (Exception e) {
throw new IllegalArgumentException("参数格式错误, className不存在");
}
if (!param.isEmpty()) {
// 获取公共的 方法 包含set, get
Method[] methods = clazz.getMethods();
// 只取 set方法 并且参数只有一个
SetMethod methodSet = Arrays.stream(methods)
.filter(f - f.getParameters().length == 1
param.keySet().stream().anyMatch(m - m.equals(f.getName())))
.collect(Collectors.toSet());
for (Method method : methodSet) {
String value = param.get(method.getName());
Parameter parameter = method.getParameters()[0];
boolean typeIgnore = false;
String type = parameter.getType().getTypeName();
Object paramObj = null;
try {
if ("java.lang.String".equals(type)) {
paramObj = value;
} else if ("java.lang.Long".equals(type) || "long".equals(type)) {
paramObj = Long.parseLong(value);
} else if ("java.lang.Integer".equals(type) || "int".equals(type)) {
paramObj = Integer.parseInt(value);
} else if ("java.lang.Float".equals(type) || "float".equals(type)) {
paramObj = Float.parseFloat(value);
} else if ("java.lang.Double".equals(type) || "double".equals(type)) {
paramObj = Double.parseDouble(value);
} else if ("java.lang.Boolean".equals(type) || "boolean".equals(type)) {
paramObj = Boolean.parseBoolean(value);
} else {
typeIgnore = true;
System.out.println("不支持的数据类型:" + type);
}
} catch (Exception e) {
System.out.println("参数类型有误, err:" + e.getMessage());
}
if (!typeIgnore) {
try {
method.invoke(obj, paramObj);
} catch (Exception e) {
System.out.println("set出错, err:" + e.getMessage());
}
}
}
}
return obj;
}
public static boolean isBlank(String str) {
return null == str || "".equals(str) || str.trim().length() == 0;
}
public static String preWorkUpperCase(String str) {
if (isBlank(str)) {
return str;
}
str = str.trim();
String s = str.substring(0, 1);
if (str.length() == 1) {
return s.toUpperCase();
}
return s.toUpperCase() + str.substring(1);
}
}
ObjectOne
package com;
public class ObjectOne {
private String name;
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ObjectTwo
package com;
public class ObjectTwo {
private String address;
private String no;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
}
执行结果:
关于java自动封装和java封装的使用方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。