壹影博客.
我在下午4点钟开始想你
Java泛型用法详解-实际项目中泛型是使用案例
  • 2024-6-15日
  • 17评论
  • 1532围观

 

Java泛型用法详解-实际项目中泛型是使用案例

java 泛型是在JDK5之后引入的一个新特性,可以在编译阶段约束操作的数据类型,并进行检查。

泛型在Java框架中无处不在,我们随便查阅一些源码我们就能发现很多<?>、<T>、<V>等写法,有的写在类上 有的写在方法参数上 有的写在方法返回值处

 当一个类上面写了<T>,其中T表示一个任意的类型,这也是泛型最重要的一个作用,他被广泛的应用到了各种通用工具、组件的开发中,用户在使用的时候传入这个类型进行操作,比如我们在使用list的时候List<String> list = new ArrayList<>(); 其中String就是我们传入的类型

 注意: 泛型中的类型只能传入包装类型,不能传入原始类型 如int、long等

简单概括泛型的出现方便了开发者写一套通用模板,使用的时候传入对应的类型,根据类型做相应的处理,而不需要开发者为每一种类型都写同样的模板代码
 

使用案例

 1.类上的泛型

 需求:做一个随机数据List集合工厂,传入一个长度和一个类型,比如传入10,String.clsss,表示创建长度为10的List<String> 并填充数据

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 随机工厂
 * @param <T>
 */
public class RandomListFactory <T> {
    private final List<T> list;
    private final Class<T> classObj;
    private final Integer length;

    public RandomListFactory(Integer length,Class<T> t) {
        list = new ArrayList<>();
        this.length=length;
        this.classObj = t;
    }

    /**
     * 根据不同的类型随机生成不同的内容
     * @return
     */
    public List<T> getList() {
        Random random=new Random();
        String[] strings=new String[]{"苹果","橘子","香蕉","芒果","西瓜","榴莲","火龙果","葡萄","梨子","李子"};
        for (int i = 0; i < length; i++) {
            //如果传入的是Integer类型
            if(classObj.equals(Integer.class)){
               Integer i1 = random.nextInt(10);
               list.add((T) i1);
            }
            //如果传入的是String类型
            if(classObj.equals(String.class)){
               int i1 = random.nextInt(10);
               list.add((T) strings[i1]);
            }
        }
        return this.list;
    };
    public void addRandomItem(T t){

    }
}

使用代码

RandomListFactory<String> randomListFactory = new RandomListFactory<>(10, String.class);
List<String> list = randomListFactory.getList();
System.out.println(list); // [梨子, 西瓜, 橘子, 香蕉, 香蕉, 香蕉, 葡萄, 苹果, 火龙果, 火龙果]

 

发表评论

Embata

Lv.1 @回复 #17

需要钱吗? 赚它不离开你的家。] https://t.me/cryptaxbot/17?SteeryVen53dub

Embata

Lv.1 @回复 #16

金融机器人是你赚钱的第一专家.] https://t.me/cryptaxbot/17?SteeryVen88dub

Embata

Lv.1 @回复 #15

额外的收入可用于使用此机器人的每个人。] https://t.me/cryptaxbot/17?SteeryVen43dub

Embata

Lv.1 @回复 #14

启动机器人,让它带给你的钱。 https://t.me/cryptaxbot/17?SteeryVen17dub

Embata

Lv.1 @回复 #13

使用此程序使您的笔记本电脑成为金融工具。] https://t.me/cryptaxbot/17?SteeryVen44dub

Embata

Lv.1 @回复 #12

让你的钱整天为你工作。 https://t.me/cryptaxbot/17?SteeryVen84dub

IronShadow0Pum

Lv.1 @回复 #11

Balanset-1A设备(以下简称"设备")  是一款便携式套件,专为平衡在自己的轴承中运行的转子而设计。 该设备允许在一个或两个平面内进行平衡,通过减少轴承单元上的动态负载显着增加机器和机构的使用寿命。 该套件包括两个振动传感器、一个相位角传感器和一个测量单元。

功能和应用

无需拆卸即可平衡:该设备允许转子直接在其轴承中进行平衡,无需特殊机器和机构拆卸。 这简化了过程并节省了时间。  

自动化系统:整个平衡过程,从测量到安装校正砝码,都是自动管理的。 用户不需要超出说明中提供的额外技能。  

记录保存:所有平衡结果都保存在平衡存档中,如果需要,可以作为协议打印。  

额外特点:Balanset-1a设备也可以用作标准振动计,测量总振动的均方根(RMS)值,振动的旋转分量的RMS值以及转子的旋转速度。 此外,它还显示振动速度时间函数和频谱图,可用于评估平衡机的技术状况。  

包装内容及操作原理

标准软件包包括一个测量单元,两个振动传感器,一个相角传感器,必要的配件和一个带软件的闪存驱动器。 该装置基于机械振动的测量来操作。 振动传感器将振动转换为电信号,然后由测量单元处理并传输到计算机进行进一步处理和分析。  

平衡建议。 [url=https://vibromera.eu/example/balancing-instrument-at-the-price-of-a-vibrometer/] 振动计 [/url] 模式

技术条件:平衡只能在技术状况良好并牢固安装在基础上的机构上进行。 不建议平衡机构与磨损或损坏的轴承.  

清洁转子:在开始工作之前,应清洁转子的任何污染物。  

寻址共振:如果测量结果在运行到运行之间有显着差异,这可能表明共振。 在这种情况下,应改变转速或改变基础上的安装条件。  

振动计测量:建议在振动计模式下进行初步测量。 如果总振动值与旋转分量匹配,则转子不平衡是振动的主要贡献者,并且可以进行平衡。  


手动静不平衡检查:对于带有水平轴的转子,静不平衡可以通过旋转转子90度手动检查。 如果检测到不平衡,应安装平衡重。  

结论

使用Balanset-1a设备可以实现有效和快速的转子平衡,提高其性能并延长其使用寿命。 对于那些参与维护和修理旋转机构的人来说,这是一个通用的解决方案。

Embata

Lv.1 @回复 #10

赚几千块钱。 不用付钱。] https://t.me/cryptaxbot/17?SteeryVen33dub

Embata

Lv.1 @回复 #9

这个机器人可以给你带来24/7的钱。] https://t.me/cryptaxbot/17?SteeryVen23dub

Embata

Lv.1 @回复 #8

让你的钱整天为你工作。 https://t.me/cryptaxbot/14?SteeryVen68dub

渝ICP备19011465号 | 渝ICP备19011465号-1