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

 

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); // [梨子, 西瓜, 橘子, 香蕉, 香蕉, 香蕉, 葡萄, 苹果, 火龙果, 火龙果]

 

发表评论

访客送审

Lv.1 @回复 #20

愿你每天的生活都充满阳光1

访客送审

Lv.1 @回复 #19

愿你每天的生活都充满阳光

Mancubus0Pum

Lv.1 @回复 #18

您想提高设备的可靠性和效率吗? 满足Balanset-1a-一个突破性的平衡和振动分析设备,已经证明了它的实际好处。  

Balanset-1a配有两个振动传感器和一个激光转速表,允许在一个或两个平面内进行平衡。 它不仅测量振动,而且自动计算平衡参数,大大简化了过程。  

Balanset-1a的用户称赞其高精度和易用性。 该设备将所有结果保存在存档中,允许轻松创建报告和重复平衡过程,从而节省您的时间和资源。  

不要错过提高设备效率的机会。 今天订购Balanset-1a,亲身体验它的好处。  

在这里你可以阅读更多关于 [url=https://vibromera.eu/] 振动特性分析采用哪些方法? [/url]

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

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