「java自动封装」java封装的使用方法

博主:adminadmin 2023-03-22 22:53:07 469

今天给各位分享java自动封装的知识,其中也会对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封装的使用方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。