ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「奇淫技巧」如何写最少的代码

2020-12-14 18:05:18  阅读:180  来源: 互联网

标签:handle 技巧 代码 最少 file new 奇淫 public String


file
前言
由于性格原因,笔者很难沉下心来进行严肃的系统学习,总是喜欢折腾一些奇淫技巧,非常喜欢代码设计,扣代码的细节,所以本次分享一下我所知道的如何写最少的代码的小技巧,如果你有更好的方案,欢迎在评论区留言,方案很棒的话,加我微信,为你送上冬天的一杯奶茶~

Java:我想返回多个返回值
秀一下Go的多返回值:

package main
import "fmt"

// 返回 X + Y 和 X * Y
func Computer(X, Y int) (int, int) {
return X + Y, X * Y
}
复制代码
众所周知,Java仅支持单一返回值,一般情况下如果需要返回多个对象,我们会根据代码语义选择容器或者新建一个新的类,把我们需要的数据包起来。

这样做有没有问题?当然没有问题,但是瑕疵就在于:可能会产生没啥语义但又不得不存在的中间类,我个人非常讨论该类代码,那么该如何解决这种问题呢?

首先需要认识到,解决方案必须满足几个要求:

代码可复用
语义要清晰
安全
既然如此,我们可以采用泛型来满足复用、语义清晰的要求,用中间类来满足代码安全性的要求,代码如下:

public class MultipleTwoReturn<A, B> {
/** 第一个返回值 **/
private final A first;

/** 第二个返回值 **/
private final B second;

public MultipleTwoReturn(A first, B second) {
    this.first = first;
    this.second = second;
}

// 省略Get方法

}
复制代码
同时,我们可以依赖于继承,让该工具类拓展更多的参数:

public class MultipleThreeReturn<A, B, C> extends MultipleTwoReturn<A, B> {

/** 第三个返回值 **/
private final C third;

public MultipleThreeReturn(A first, B second, C third) {
    super(first, second);
    this.third = third;
}

}
复制代码
测试类:

public class MultipleApp {

public static void main(String[] args) {
    MultipleTwoReturn<Integer, String> returnTest = MultipleApp.getReturnTest();
    System.out.println(returnTest.getFirst());
    System.out.println(returnTest.getSecond());
}

private static MultipleTwoReturn<Integer, String> getReturnTest() {
    MultipleTwoReturn<Integer, String> demo = new MultipleTwoReturn<>(0, "Kerwin Demo.");
    return demo;
}

}
复制代码
本质还是普通对象,但是加上泛型后威力剧增!由于在方法定义时就强制了泛型约束,语义非常清晰,同时可以完全杜绝上述的无语义中间类,当然一些必要的,有业务含义的组装类,不建议使用这种方式。

泛型:我想new一个对象
大家在学Java泛型之初有没有这种想法?我想利用作为泛型约束,却需要new一个T,但是Java它new不出来啊

标签:handle,技巧,代码,最少,file,new,奇淫,public,String
来源: https://www.cnblogs.com/lbys/p/14134598.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有