struts2 依赖注入boolean类型的属性时报错

简介:

使用IDE:eclipse;

struts2的版本:2.3.4.1

登录界面代码如下:

 

Html代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  3.     pageEncoding="UTF-8"%>  
  4. <%  
  5. String path = request.getContextPath();  
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  7. %>  
  8. <%@ taglib prefix="s" uri="/struts-tags"%>  
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  10. <html xmlns="http://www.w3.org/1999/xhtml">  
  11. <head>  
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  13. <title>login</title>  
  14. </head>  
  15. <body>  
  16. <center>  
  17. <h1>login platform</h1>  
  18. <s:form action="/login" method="post" >  
  19.     <table>  
  20.     <tr><td>username:</td> <td><s:textfield name="user.username"  ></s:textfield> </td></tr>  
  21.     <tr><td>password:</td> <td><s:textfield name="user.password"  ></s:textfield> </td></tr>  
  22.     <tr><td>age:</td> <td><s:textfield name="user.age"  ></s:textfield> </td></tr>  
  23.     <tr><td>isBoy:</td> <td><s:textfield name="user.isBoy"  ></s:textfield> </td></tr>  
  24.     <tr> <td colspan="2"><s:submit value="login" ></s:submit> </td></tr>  
  25.       
  26.     </table>  
  27.     </s:form>  
  28.   
  29. </center>  
  30. </body>  
  31. </html>  

 

对应的bean中有一个成员变量是:private boolean isBoy;(是boolean 类型的)

 

 

Java代码   收藏代码
  1. package com.jn.bean;  
  2.   
  3. public class LoginUser {  
  4.     private int age;  
  5.     private String username;  
  6.     private String password;  
  7.     /*** 
  8.      * 是否是男性 
  9.      */  
  10.     private boolean isBoy;  
  11.   
  12.     public LoginUser() {  
  13.         super();  
  14.     }  
  15.   
  16.     public int getAge() {  
  17.         return age;  
  18.     }  
  19.   
  20.     public void setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23.   
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.   
  28.     public void setUsername(String username) {  
  29.         this.username = username;  
  30.     }  
  31.   
  32.     public String getPassword() {  
  33.         return password;  
  34.     }  
  35.   
  36.     public void setPassword(String password) {  
  37.         this.password = password;  
  38.     }  
  39.   
  40.     public boolean isBoy() {  
  41.         return isBoy;  
  42.     }  
  43.   
  44.     public void setBoy(boolean isBoy) {  
  45.         this.isBoy = isBoy;  
  46.     }  
  47.   
  48. }  

 其中的getter,setter方法都是使用eclipse自动生成的。

 

 

对应的action为:

Java代码   收藏代码
  1. package com.jn.action;  
  2.   
  3. import com.jn.bean.LoginUser;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5.   
  6. public class LoginVerifyAction extends ActionSupport {  
  7.     private static final long serialVersionUID = -5532496750392156543L;  
  8.     private LoginUser user;  
  9.   
  10.     @Override  
  11.     public String execute() throws Exception {  
  12.         System.out.println("user information:");  
  13.         System.out.println("username:"+user.getUsername());  
  14.         System.out.println("password:"+user.getPassword());  
  15.         System.out.println("age:"+user.getAge());  
  16.         System.out.println("isBoy:"+user.isBoy());  
  17.         return super.execute();  
  18.     }  
  19.       
  20.     public LoginUser getUser() {  
  21.         return user;  
  22.     }  
  23.   
  24.     public void setUser(LoginUser user) {  
  25.         this.user = user;  
  26.     }  
  27.       
  28. }  

 

 

但是登录时报错:

 

Xml代码   收藏代码
  1. 警告: Error setting expression 'user.isBoy' with value '[Ljava.lang.String;@863941'  
  2. ognl.NoSuchPropertyException: com.jn.bean.LoginUser.isBoy [java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"]  
  3.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1682)  
  4.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:87)  
  5.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  6.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  7.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  8.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  9.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  10.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  11.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  12.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  13.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  14.     at ognl.Ognl.setValue(Ognl.java:737)  
  15.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  16.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  17.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  18.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  19.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  20.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  21.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  22.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  23.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  24.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  25.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  26.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  27.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  28.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  29.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  30.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  31.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  32.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  33.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  34.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  35.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  36.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  37.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  38.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  39.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  40.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  41.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  42.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  43.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  44.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  45.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  46.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  47.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  48.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  49.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  50.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  51.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  52.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  53.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  54.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  55.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  56.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  57.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  58.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  59.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  60.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  61.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  62.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  63.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  64.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  65.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  66.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  67.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  68.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  69.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  70.     at java.lang.Thread.run(Thread.java:662)  
  71. Caused by: java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"  
  72.     at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)  
  73.     at java.lang.reflect.Field.doSecurityCheck(Field.java:960)  
  74.     at java.lang.reflect.Field.getFieldAccessor(Field.java:896)  
  75.     at java.lang.reflect.Field.set(Field.java:657)  
  76.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1674)  
  77.     ... 67 more  
  78. /-- Encapsulated exception ------------\  
  79. java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class com.jn.bean.LoginUser with modifiers "private"  
  80.     at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)  
  81.     at java.lang.reflect.Field.doSecurityCheck(Field.java:960)  
  82.     at java.lang.reflect.Field.getFieldAccessor(Field.java:896)  
  83.     at java.lang.reflect.Field.set(Field.java:657)  
  84.     at ognl.OgnlRuntime.setFieldValue(OgnlRuntime.java:1674)  
  85.     at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:87)  
  86.     at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)  
  87.     at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)  
  88.     at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2315)  
  89.     at ognl.ASTProperty.setValueBody(ASTProperty.java:127)  
  90.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  91.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  92.     at ognl.ASTChain.setValueBody(ASTChain.java:227)  
  93.     at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)  
  94.     at ognl.SimpleNode.setValue(SimpleNode.java:301)  
  95.     at ognl.Ognl.setValue(Ognl.java:737)  
  96.     at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217)  
  97.     at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186)  
  98.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173)  
  99.     at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151)  
  100.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:317)  
  101.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:228)  
  102.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  103.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  104.     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:236)  
  105.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  106.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  107.     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)  
  108.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  109.     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)  
  110.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  111.     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)  
  112.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  113.     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)  
  114.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  115.     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)  
  116.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  117.     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)  
  118.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  119.     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)  
  120.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  121.     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)  
  122.     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)  
  123.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  124.     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)  
  125.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  126.     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)  
  127.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  128.     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)  
  129.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  130.     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)  
  131.     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)  
  132.     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)  
  133.     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511)  
  134.     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)  
  135.     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)  
  136.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
  137.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
  138.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)  
  139.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)  
  140.     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
  141.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)  
  142.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)  
  143.     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)  
  144.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
  145.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)  
  146.     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)  
  147.     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)  
  148.     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)  
  149.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  150.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  151.     at java.lang.Thread.run(Thread.java:662)  
  152. \--------------------------------------/  

 错误信息说明,struts2没有找到isBoy 的setter方法,因为struts2认为isBoy 的setter方法名应该是setIsBoy

为什么会设置isBoy时就有问题呢?因为按照struts2 的依赖注入规则,setter方法应该是set+成员变量(首字母变为大写)

我把isBoy的setter方法由setBoy 修改为setIsBoy,就好了。

Java代码   收藏代码
  1. public void setIsBoy(boolean isBoy) {  
  2.         this.isBoy = isBoy;  
  3.     }  

 

总结:如果要依赖注入的属性是boolean类型并且属性名以is开头,就会出现上述问题。

 

解决方法

如果使用struts2的依赖注入,那么boolean 类型的属性名不要以is开头。我修改方法是把属性名由isBoy改为boy:

Java代码   收藏代码
  1. package com.jn.bean;  
  2.   
  3. public class LoginUser {  
  4.     private int age;  
  5.     private String username;  
  6.     private String password;  
  7.     /*** 
  8.      * 是否是男性 
  9.      */  
  10.     private boolean boy;  
  11.   
  12.     public LoginUser() {  
  13.         super();  
  14.     }  
  15.   
  16.     public int getAge() {  
  17.         return age;  
  18.     }  
  19.   
  20.     public void setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23.   
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.   
  28.     public void setUsername(String username) {  
  29.         this.username = username;  
  30.     }  
  31.   
  32.     public String getPassword() {  
  33.         return password;  
  34.     }  
  35.   
  36.     public void setPassword(String password) {  
  37.         this.password = password;  
  38.     }  
  39.   
  40.     public boolean isBoy() {  
  41.         return boy;  
  42.     }  
  43.   
  44.     public void setBoy(boolean boy) {  
  45.         this.boy = boy;  
  46.     }  
  47.   
  48. }  

 登录页面中把user.isBoy 改为user.boy 就好了。

相关文章
|
6月前
|
SQL 流计算 OceanBase
OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
【2月更文挑战第25天】OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
175 3
|
前端开发 JavaScript
前端基础 - JavaScript值Boolean类型的默认转换
前端基础 - JavaScript值Boolean类型的默认转换
63 0
|
2月前
lombok~避免Boolean属性使用默认的方法
【9月更文挑战第25天】在 Lombok 中,默认会为 `Boolean` 属性生成 `isXXX` 方法。若要避免此默认行为,可通过三种方式实现:1)使用 `@Getter/@Setter` 注解的 `name` 属性自定义方法名;2)通过 `@Data` 注解的 `access` 属性设置为 `FIELD` 直接访问字段;3)使用 `@Builder` 注解在生成的 builder 类中指定方法名。这些方法允许你根据需求定制属性访问方式。
|
3月前
|
Python
python布尔类型 (Boolean Type)
【8月更文挑战第3天】
64 8
|
3月前
|
Python
在Python中的Boolean类型
在Python中的Boolean类型
TS定义布尔值,let flag:boolean = true,定义数字类型 let a1:number = 10,赋值 let str1:string = ‘‘,打印c~.log($(str1))
TS定义布尔值,let flag:boolean = true,定义数字类型 let a1:number = 10,赋值 let str1:string = ‘‘,打印c~.log($(str1))
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
TS,数据类型概述,常见的基本数据类型有number/string/boolean/undefined/null,字符串用““,let food: string = ‘糖葫芦‘,布尔类型
|
6月前
|
IDE Java 开发工具
阿里巴巴不建议 boolean 类型变量用 isXXX
阿里巴巴不建议 boolean 类型变量用 isXXX
63 1
|
6月前
|
算法 测试技术 编译器
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(二 )
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
157 0
|
6月前
|
程序员 编译器 C语言
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean(一)
【C++ 基本类型 bool 】深入探索C++中的布尔类型Boolean
573 0

热门文章

最新文章

下一篇
无影云桌面