Boolean类的测试

//Boolean的测试

/**
 *<p>项目名称:  Java</p>
 *<p>文件名称:  BooleanTest</p>
 *<p>版权所有:  版权所有(C)2008-2010</p>
 *<p>公    司:  </p>
 *<p>编写日期: 2008-7-9上午03:02:48</p>
 *<p>作    者:  huangtao</p>
 */
package langtest;

/**
 * @author huangtao
 */
public class BooleanTest
{
 public static void main(String[] args)
 {
  //声明Boolean对象
  boolean flag = false;
  Boolean bo = new Boolean(flag);
  Boolean bo1 = new Boolean(new String("false"));

  boolean flagtwo = true;
  Boolean boo = new Boolean(flagtwo);
  String a = "true";
  Boolean botwo = new Boolean(a);
  
  //获取boolean值
  System.out.println(bo.booleanValue());
  System.out.println(bo.compareTo(boo));
  System.out.println(bo.compareTo(bo));
  System.out.println(bo.equals(bo));
  System.out.println(bo.equals(boo));
  System.out.println(bo.equals(bo1));
  
  //获取hash码
  System.out.println(bo.hashCode()+bo1.hashCode()+botwo.hashCode()+boo.hashCode());
  System.out.println(bo.hashCode()+"_"+bo1.hashCode()+"_"+botwo.hashCode()+"_"+boo.hashCode());
  
  //获取boolean值
  System.out.println(Boolean.parseBoolean(new String("true")));
  System.out.println(Boolean.parseBoolean(new String("false")));
  System.out.println(bo.toString()+""+bo1.toString()+""+boo.toString()+""+botwo.toString());

  if ("false".equals(bo.toString()))
  {
   System.out.println("equal");
  }
  else
  {
   System.out.println("not equal");
  }

  if ("false".equals(Boolean.toString(flagtwo)))
  {
   System.out.println("equal");
  }
  else
  {
   System.out.println("not equal");
  }
  
  //产生Boolean对象
  Boolean c = Boolean.valueOf(flag);
  //获取boolean值
  System.out.println(c.booleanValue());
  Boolean c1 = Boolean.valueOf(new String("false"));
  //获取boolean值
  System.out.println(c1.booleanValue());
  Boolean c2 = Boolean.valueOf(a);
  //获取boolean值
  System.out.println(c2.booleanValue());

  Boolean fa = Boolean.FALSE;
  Boolean tr = Boolean.TRUE;
  System.out.println(fa.booleanValue());
  System.out.println(tr.booleanValue());
  
  //获取类类型
  Class ca = Boolean.TYPE;
  System.out.println(ca.getClass().getName());
 }
}

在 Java 中,`Boolean` 是一个包装,用于封装基本类型 `boolean` 的值。它常用于需要对象而非原始类型的场景,比如集合(`List<Boolean>`)、泛型、反射等。 你提到“以上添加 boolean 信息”,我理解为你希望在处理任意对象,也能够识别并保留对 `Boolean` 类型的判断与处理能力,例如: - 判断传入对象是否是 `Boolean` 类型; - 对 `Boolean` 值进行逻辑处理或日志记录; - 在递归结构中保持对 `Boolean` 类型字段的识别; - 避免误将 `Boolean` 当作字符串或其他类型处理。 --- ### ✅ 示例代码:增强版 deepFilterHtml 方法,支持 Boolean 类型识别 ```java import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.html.HtmlUtil; import java.util.*; public class DeepHtmlFilterWithBoolean { /** * 对任意 Object 进行深度 HTML 过滤,递归处理 Map、List、Java Bean 中的字符串字段 * 并增加对 Boolean 类型的识别与处理能力 * * @param obj 要过滤的对象 * @return 处理后的对象 */ public static Object deepFilterHtml(Object obj) { if (obj == null) return null; // 特别处理 Boolean 类型 if (obj instanceof Boolean) { Boolean boolValue = (Boolean) obj; System.out.println("发现 Boolean 类型值: " + boolValue); return boolValue; // 可根据业务需求做额外处理 } // 字符串单独处理 if (obj instanceof String) { return HtmlUtil.filter((String) obj); } // 处理 List 集合 if (obj instanceof List) { List<?> list = (List<?>) obj; List<Object> newList = new ArrayList<>(); for (Object item : list) { newList.add(deepFilterHtml(item)); } return newList; } // 处理 Map 集合 if (obj instanceof Map) { Map<?, ?> map = (Map<?, ?>) obj; Map<Object, Object> newMap = new LinkedHashMap<>(); for (Map.Entry<?, ?> entry : map.entrySet()) { newMap.put(deepFilterHtml(entry.getKey()), deepFilterHtml(entry.getValue())); } return newMap; } // Java Bean 处理 if (BeanUtil.isBean(obj.getClass())) { return filterBean(obj); } // 其他基础类型或不支持的类型直接返回 return obj; } /** * 对 Java Bean 的每个字段进行 HTML 过滤,并识别 Boolean 字段 */ private static Object filterBean(Object bean) { Map<String, Object> beanMap = BeanUtil.beanToMap(bean); Map<String, Object> filteredMap = new HashMap<>(); for (Map.Entry<String, Object> entry : beanMap.entrySet()) { Object value = entry.getValue(); if (value instanceof Boolean) { System.out.println("Bean 中的布尔字段 [" + entry.getKey() + "] 值为: " + value); } filteredMap.put(entry.getKey(), deepFilterHtml(value)); } return filteredMap; // 也可以用 BeanUtil.mapToBean(filteredMap, bean.getClass()) } // 测试示例 public static void main(String[] args) { Map<String, Object> data = new HashMap<>(); data.put("name", "<b>Alice</b>"); data.put("isAdmin", true); data.put("age", 25); data.put("hobbies", Arrays.asList("<i>reading</i>", "coding")); data.put("address", MapUtil.of("city", "<script>alert('xss')</script>City")); Object result = DeepHtmlFilterWithBoolean.deepFilterHtml(data); System.out.println(result); } } ``` --- ### 🔍 解释说明: - **新增 Boolean 类型判断**: - 使用 `instanceof Boolean` 来识别布尔类型; - 可以在此基础上打印日志、记录审计信息、进行逻辑判断等; - **递归结构中的 Boolean 处理**: - 在 `filterBean()` 方法中遍历字段,也能识别出布尔字段; - 不影响其他非字符串字段(如 Integer、Date 等); - **输出示例**: ``` 发现 Boolean 类型值: true Bean 中的布尔字段 [isAdmin] 值为: true {name=<b>Alice</b>, isAdmin=true, age=25, hobbies=[<i>reading</i>, coding], address={city=<script>alert('xss')</script>City}} ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值