精华内容
下载资源
问答
  • kotlin方法参数注释-方法参数说明问题所在解决方法步骤如下: 问题所在 当我们想在kotlin里面对方法进行注释,并对参数也带上注释,但是默认的as里面是没有这个功能的,打上 /** 并回车的时候,只有如下结果: // An...

    kotlin方法参数注释-方法参数说明

    问题所在

    当我们想在kotlin里面对方法进行注释,并对参数也带上注释,但是默认的as里面是没有这个功能的,打上 /** 并回车的时候,只有如下结果:

    // An highlighted block
    /**
    * 方法功能说明,但是没带上参数
    */
    

    想让自己写的方法带点详细的说明都没有,就会给自己和别人阅读代码带来一定的困难。所以我们要解决的就是这个问题。

    解决方法

    也很简单,安装一个插件即可 BugKotlinDocument

    步骤如下:

    在Android studio里面,打开偏好设置,搜索 plugin,所属BugKotlinDocument,点击安装,完成。

    最后再去kotlin类里面键入 /** 回车,就出来了。

    /**
         * 分享到微信
         * @param sharetype String
         * @param type Share2Area
         * @param title String
         * @param description String
         * @param picurl String
         * @param weburl String?
         */
    
    展开全文
  • java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个“ 危险信号 ”,就逻辑和功能而言,它们不一定是“错误的”,但通常暗示当前或将来出现错误的可能性很高。 在一小部分帖子中,...

    java自定义方法参数注解

    我认为构造函数和方法中冗长的参数列表是Java开发中的另一个“ 危险信号 ”,就逻辑和功能而言,它们不一定是“错误的”,但通常暗示当前或将来出现错误的可能性很高。 在一小部分帖子中,我介绍了一些可用于减少方法或构造函数的参数数量或至少使冗长的参数列表更具可读性和错误率的方法。 每种方法都有其自己的优点和缺点。 这篇文章开始于该系列文章的开始,重点是通过使用自定义类型来提高长方法/构造函数参数列表的可读性和安全性。

    方法和构造函数的冗长参数列表有几个缺点。 大量参数可能很乏味,并且难以调用代码使用。 较长的参数列表还可能导致调用中参数的无意切换。 在某些情况下,可能很难找到这些错误。 幸运的是,大多数方法不必处理冗长的参数列表的另一个缺点: JVM通过编译时错误 将参数的数量限制为一个方法

    自定义类型的使用是一种不减少方法或构造函数的参数数量,但确实使这些较长的参数列表更具可读性且不太可能以错误的顺序提供的方法。 这些自定义类型可以实现为数据传输对象 (DTO), JavaBeans值对象引用对象或任何其他自定义类型(在Java中,通常是枚举 )。

    这是一个人为设计的方法示例,该方法接受多个参数,其中许多参数为String类型,许多参数为boolean类型。

    /**
        * Instantiate a Person object.
        * 
        * @param lastName
        * @param firstName
        * @param middleName
        * @param salutation
        * @param suffix
        * @param streetAddress
        * @param city
        * @param state
        * @param isFemale
        * @param isEmployed
        * @param isHomeOwner
        * @return 
        */
       public Person createPerson(
          final String lastName,
          final String firstName,
          final String middleName,
          final String salutation,
          final String suffix,
          final String streetAddress,
          final String city,
          final String state,
          final boolean isFemale,
          final boolean isEmployed,
          final boolean isHomeOwner)
       {
          // implementation goes here
       }

    容易意外地切换它们并以错误的顺序传递它们。 尽管我通常希望减少参数,但是可以通过更改参数列表中的类型来进行一些改进。 接下来的代码清单显示了这些自定义类型的一些示例,这些示例可用于名称,地址,城市和布尔参数。

    可以将三个name参数分别更改为Name的自定义类型,而不是String 接下来定义该Name类型。

    名称.java

    package dustin.examples;
    
    /**
     * Name representation.
     * 
     * @author Dustin
     */
    public final class Name
    {
       private final String name;
    
       public Name(final String newName)
       {
          this.name = newName;
       }
    
       public String getName()
       {
          return this.name;
       }
    
       @Override
       public String toString()
       {
          return this.name;
       }
    }

    称呼和后缀String类型也可以替换为自定义类型,如以下两个代码清单所示。

    Salutation.java

    package dustin.examples;
    
    /**
     * Salutations for individuals' names.
     * 
     * @author Dustin
     */
    public enum Salutation
    {
       DR,
       MADAM,
       MISS,
       MR,
       MRS,
       MS,
       SIR
    }

    后缀.java

    package dustin.examples;
    
    /**
     * Suffix representation.
     * 
     * @author Dustin
     */
    public enum Suffix
    {
       III,
       IV,
       JR,
       SR
    }

    其他参数也可以用自定义类型替换。 下一个代码清单显示了可以替换boolean以提高可读性的自定义枚举。

    Gender.java

    package dustin.examples;
    
    /**
     * Gender representation.
     * 
     * @author Dustin
     */
    public enum Gender
    {
       FEMALE,
       MALE
    }

    EmploymentStatus.java

    package dustin.examples;
    
    /**
     * Representation of employment status.
     * 
     * @author Dustin
     */
    public enum EmploymentStatus
    {
       EMPLOYED,
       NOT_EMPLOYED
    }

    HomeOwnerStatus.java

    package dustin.examples;
    
    /**
     * Representation of homeowner status.
     * 
     * @author Dustin
     */
    public enum HomeownerStatus
    {
       HOME_OWNER,
       RENTER
    }

    也可以使用定义的自定义类型来传递此人的地址信息,如以下代码清单所示。

    StreetAddress.java

    package dustin.examples;
    
    /**
     * Street Address representation.
     * 
     * @author Dustin
     */
    public final class StreetAddress
    {
       private final String address;
    
       public StreetAddress(final String newStreetAddress)
       {
          this.address = newStreetAddress;
       }
    
       public String getAddress()
       {
          return this.address;
       }
    
       @Override
       public String toString()
       {
          return this.address;
       }
    }

    City.java

    package dustin.examples;
    
    /**
     * City representation.
     * 
     * @author Dustin
     */
    public final class City
    {
       private final String cityName;
    
       public City(final String newCityName)
       {
          this.cityName = newCityName;
       }
    
       public String getCityName()
       {
          return this.cityName;
       }
    
       @Override
       public String toString()
       {
          return this.cityName;
       }
    }

    State.java

    package dustin.examples;
    
    /**
     * Simple representation of a state in the United States.
     * 
     * @author Dustin
     */
    public enum State
    {
       AK,
       AL,
       AR,
       AZ,
       CA,
       CO,
       CT,
       DE,
       FL,
       GA,
       HI,
       IA,
       ID,
       IL,
       IN,
       KS,
       KY,
       LA,
       MA,
       MD,
       ME,
       MI,
       MN,
       MO,
       MS,
       MT,
       NC,
       ND,
       NE,
       NH,
       NJ,
       NM,
       NV,
       NY,
       OH,
       OK,
       OR,
       PA,
       RI,
       SC,
       SD,
       TN,
       TX,
       UT,
       VA,
       VT,
       WA,
       WI,
       WV,
       WY
    }

    通过实现这些自定义类型,我们原始方法的签名变得更具可读性,并且不太可能意外地以错误的顺序提供参数。 这显示在下一个代码清单中。

    public Person createPerson(
          final Name lastName,
          final Name firstName,
          final Name middleName,
          final Salutation salutation,
          final Suffix suffix,
          final StreetAddress address,
          final City city,
          final State state,
          final Gender gender,
          final EmploymentStatus employment,
          final HomeownerStatus homeowner)
       {
          // implementation goes here
       }

    在上面的代码清单中,编译器现在将通过不允许将之前的大多数Stringboolean参数意外混合来帮助开发人员。 这三个名称仍然是一个潜在的问题,因为调用方可能会无序提供它们,但是如果我担心的话,我可以为FirstNameLastNameMiddleName编写特定的类型(类)。 相反,我更喜欢使用一个代表全名的新类,并将这三个名称全部用作其属性,但是该方法将成为以后处理Java方法的过多参数的主题。

    优势与优势

    在给定方法上处理多个参数时编写和使用自定义类型的优点包括代码维护者和使用API​​的开发人员的可读性。 具有多个相同类型的参数,不仅使开发人员可以轻松混合其顺序,还降低了IDE在使用代码完成功能时将适当建议与参数匹配的能力。 正确的命名可以对IDE有所帮助,但是对IDE而言,没有什么比使用这些自定义类型可以完成的静态编译时检查有用的了。 总的来说,我更喜欢从运行时转移尽可能多的自动检查到编译时,并且让这些静态定义的自定义类型(而不是泛型类型)来完成此任务。

    此外,这些自定义类型的存在使将来更容易添加更多详细信息。 例如,将来我可以在不更改接口的情况下,将完整的状态名称或有关状态的其他详细信息添加到该枚举中。 我不可能用一个简单的String来表示状态。

    成本与劣势

    自定义类型方法最常被引用的缺点之一是额外的实例化和内存使用的开销。 例如, Name类需要实例化Name类本身及其封装的String 但是,我认为,这种争论通常是从过早优化的角度出发,而不是合法的性能问题。 在某些情况下,额外的实例化过于昂贵,以至于无法证明增强的可读性和编译时检查,但是许多(也许大多数 )情况可以提供额外的实例化,而其可观察到的影响却可以忽略不计。 我很难相信使用自定义枚举而不是Stringboolean会在大多数情况下引入性能问题。

    使用自定义类型而不是内置类型的另一个缺点是编写和测试这些自定义类型需要额外的精力。 但是,正如本文中的示例所示,通常存在非常简单的类或枚举,并且编写或测试也不难。 有了良好的IDE和良好的脚本语言(例如Groovy),它们特别容易自动编写和测试。

    结论

    我喜欢使用自定义类型来提高可读性,并将更多的参数类型检查负担转移到编译器上。 我没有更多地使用这种方法来提高具有非常长的参数列表的方法和构造函数的可读性的最大原因是,它本身并没有减少参数的数量。 它使长列表更易于阅读和使用,但调用方仍然必须编写笨拙的客户端代码才能调用该方法或构造函数。 因此,在改进接受一长串参数的方法时,我经常使用除自定义类型之外的其他技术。 这些其他技术将在以后的文章中探讨。


    翻译自: https://www.javacodegeeks.com/2013/10/too-many-parameters-in-java-methods-part-1-custom-types.html

    java自定义方法参数注解

    展开全文
  • java方法参数注解

    2011-12-03 21:46:04
    [code="java"... import java.lang.annotation.Documented; import java.lang.annotation.ElementType;...import java.lang.annotation.Inherited;...import java.lang.annotation.Retent...
    package cn.ljz.annotation;

    import java.lang.annotation.Documented;
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Inherited;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;


    @Target(ElementType.PARAMETER)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited

    public @interface Test {
    public int id();
    public String name() default "lidong";
    public int age();
    public Test2 test2() default Test2.FILE;
    }



    package cn.ljz.annotation;

    public enum Test2 {
    JSON,
    FMJSON,
    FMLOADJSON,
    FJSON,
    TEXT,
    FILE
    }



    package cn.ljz.annotation;

    import java.lang.annotation.Annotation;
    import java.lang.reflect.Method;

    public class Main {

    public void test1(@Test(id = 0, age = 0) String a){

    }


    public void test2(@Test(id = 0, age = 0,name="yyl") String b){

    }


    public void test3(@Test(id = 10, age = 10,name="yyl") int c){

    }

    public static void main(String[] args) {
    Method[] m = Main.class.getDeclaredMethods();
    Annotation[][] an = null;
    for(Method method:m){
    an = method.getParameterAnnotations();
    System.out.println(method.getParameterTypes() );
    if(an.length>0){
    for(int i=0;i<an.length;i++){
    for(int j=0;j<an[i].length;j++){
    Test t = (Test) an[i][j];
    System.out.println(method.getName()+","+t.age()+","+t.id()+","+t.name()+","+t.test2());
    }
    }
    }

    }
    }
    }
    展开全文
  • IntelliJ IDEA配置方法参数注释

    千次阅读 2018-02-08 10:34:39
    2、给方法添加注解,使用live templates 方式添加 File->Settings->Editor->Live templates 1、添加 Template Group 2、添加 Live Template 3、添加注释内容和解析方式和语言支持 /** * @Description TODO * @...

    先去了解注释模板的配置

    idea 注释 模板整理

    1、给类添加注释

    File->Settings->Editor->File and Code Templates -> Class

    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
    /**
     * ${DESCRIPTION}
     * @author author
     * @create ${YEAR}-${MONTH}-${DAY} ${TIME}
     */
    public class ${NAME} {
    }

    如下图idea-codes

    这样就可以给类添加注解了。

    2、给方法添加注解,使用live templates 方式添加

    File->Settings->Editor->Live templates

    1、添加 Template Group

    2222222

    2、添加 Live Template

    33333

    3、添加注释内容和解析方式和语言支持

    /**
     * @Description TODO
     * @Author author
     * @Date $date$ $time$
     * @method $method$
     */

    555

    idea-javaidea-java-zhici

    4、添加成功后,在自己的方法内输入mc 回车(重点),然后就生成注释了。然后再把注释提到方法级别上就ok了

    2018-01-30更新:鉴于部分人不明白,补充说明+图

    这篇文章是对idea方法注释的补充

    1、打开IDEA设置,找到Live Templates,将mc格式改成如下格式(注意空格!!!,否则格式不齐),第1行、第4行没空格

    $END$位置是写描述的,

    *
     * $END$
     *
    $params$
     * @return $return$
     * @author 杨小华
     * @date $date$ $time$
     * @since 1.0.0
     */

    2、配置params

    groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ((i < params.size() - 1) ? '\\n\\t' : '')}; return result", methodParameters())

    3、使用方法

    在方法上  /*mc+tab键,如果想和Eclipse中一样,将mc改为*,然后在方法上  /**+tab键

    @PostMapping("/save")
    public Error saveCollect(@RequestParam Integer userId, String master, String cover) {

    效果

    /**
       * 
       *
       * @param userId
       * @param master
       * @param cover
       * @return com.lemo.face.response.Error
       * @author 杨小华
       * @date 2018/1/19 14:03
       * @since 1.0.0
       */
      @PostMapping("/save")
      public Error saveCollect(@RequestParam Integer userId, String master, String cover) {
    展开全文
  • IDEA注释模板设置,方法参数分行,鼠标悬停显示方法注释。 IDEA好用到爆炸。 1. 开启鼠标悬停显示方法注释 进入idea进行设置:(ctrl + alt + s) setting -> Editor -> General -> Show quick ...
  • 注解形式Controller方法参数

    千次阅读 2016-01-09 21:32:55
    注解形式Controller方法参数
  • Idea 添加注释:类注释方法注释(可获取参数

    万次阅读 多人点赞 2018-11-15 15:01:07
    Idea 添加注释:类注释、方法注释类注释方法注释 类注释 File–Setting–Editor–File and Code Templates–Class: 注释模板:/** * * *@description: *@author: Andy *@time: ${DATE} ${TIME} * */ ...
  •  项目中碰到一个需求,希望所有“存在参数被自定义注解@RequestModel注释”了的方法都被切面拦截,在实际逻辑执行前,先进行参数验证。 @RequestMapping(value = "list", method = {RequestMethod.GET...
  • SpringAOP获取方法参数上的注解

    万次阅读 2019-08-08 21:11:40
    ① 如下代码,自定义一个参数注解@Test,并将其使用到方法参数上,用于标注需要检验的参数 /** * 自定义注解,用于参数 */ @Target(PARAMETER) @Documented @Retention(RetentionPolicy.RUNTIME) public @...
  • 方法参数是动态的,比如操作人,操作原因等,如果直接从参数中获取,无法区分出那个参数是哪个参数,此时需要将方法参数值绑定到注解属性上,可是如何绑定上去呢? 实现 我们知道在Controller层,通过...
  • 如题,使用idea的时候,因为它预定义的注释样式不尽人意,但还好的是支持自定义模板。 自定义模板 File->Settings 图一 然后搜索Live Templates ,之后添加一个自己的模板组,我的是myGroup,然后是添加...
  • } 自定义注解: /** * 添加物品时,区分类型 */ @StringDef(value = [TYPE.VEHICLE_INSPECT, TYPE.PERSON_INSPECT]) @Retention(AnnotationRetention.SOURCE) annotation class TYPE { companion object { const ...
  • idea设置类注释方法注释方法注释参数返回值) 如题主要是为了以后方便查阅。 一、类的注释模板和配置 1.步骤一:打开Idea,在菜单栏中找到 File ->setting -> File and Code Templates 后点击,选择右侧...
  • 由于想规范下一下项目的注释, 所以首先得规范一下IDEA的注释模板, 创建类跟在方法上的注释模板怎么设置我就不说了, 网上太多的教程了, 我在这里要说的是稍微高级一点的 如何个性化 自定义 我的方法注释模板如下 ...
  • Ctrl+P:查看方法参数 Ctrl+Q:查看类、方法、属性注释
  • //获取方法参数注解 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for (Annotation[] annotations : parameterAnnotations) { for (Annotation annotation : annotations) { //...
  • 我们先来看一下kotlin中的注解Annotation.kt: package kotlin.annotation import kotlin.annotation.AnnotationTarget.* public enum class AnnotationTarget { /** 类、接口或对象 */ CLASS, /** 仅注释类 *...
  • AOP中获取方法上的注解/参数

    千次阅读 2019-05-15 14:46:03
    通过aop方式(自定义注解)对方法进行前置/环绕/后置等处理时,可以通过以下方法,在加强处理方法中获取被加强方法参数注解等内容 自定义注解 @Target({ElementType.PARAMETER, ElementType.METHOD}) @...
  • @ModelAttribute 注释方法参数里面

    千次阅读 2018-02-28 09:35:33
    当@ModelAttribute 注释方法参数里面且参数类型为javabean对象时,就是用来封装前端页面传递过来的“对象属性”的。前提:在前端页面有一个表单,表单有name,sex,age等属性,当这个表单被提交到后台后,我们有...
  • @Bean注解方法存在参数参数取值

    千次阅读 2019-05-25 22:25:33
    会从Spring容器中根据类型注入(若有多个类型的的话则根据方法名按名称注入,没有找到就会报错)
  • idea方法注释参数换行展示)

    千次阅读 2019-08-21 09:54:54
    idea注释模板java方法上的注释模板1.使用的是"table"键,Template text中的内容如下2.参数的"default value"如下 java方法上的注释模板 网上有很多方法了,但是方法参数都是数组的形式,后来忘记是在哪里看见方法...
  • for (Method method : methods) { //获取方法参数注解 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for (Annotation[] annotations : parameterAnnotations) { for (Annotation ...
  • IDEA为方法参数@param配置注释

    千次阅读 2019-11-27 19:31:20
    IDEA方法参数@param的注解配置 1.file-settings-live templates. 2.点+,选择第二个 3.自定义名称 4.添加注释操作 5.定义操作如何执行(5.1)、定义注释的格式(5.2)、定义注释的使用范围(5.3) 注意:...
  • ![图片说明](https://img-ask.csdn.net/upload/201709/04/1504490303_587701.png) java怎么把方法参数值赋值到该方法注解
  • 一、下面为7种服务端获取前端传过来的参数方法 常用的方法为:@RequestParam和@RequestBody 1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。 /** * 1.直接把...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,166,224
精华内容 466,489
关键字:

方法参数注解