首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    C#入门类、集合、方法、约束、委托

    不然 集合和ArrayList的装箱拆箱 常见的类型 类和方法 约束 委托 ###很难理解? 第一次接触那还是在大二上学期的时候,那会是学c#面向对象的时候接触过集合,但尴尬的是那会还没有“”这个概念,仅仅只停留在集合的使用。 2.创建类,可在编译时创建类型安全的集合 3.避免装箱和拆箱操作降低性能,在大型集合中装箱和拆箱的影响非常大. 下面是一些基础的类型 1.类 class MyGenericClass<T> { //...... } 2.接口 ,声明的时候还是和类、方法一样加个<坑> 站个坑,其实委托使用的时候不是很多,要慎用。

    3.9K30编辑于 2022-09-14
  • 来自专栏韩曙亮的移动开发专栏

    【Java 用法 ( 类用法 | 方法用法 | 通配符 ? | 安全检查 )

    > 四、安全检查 五、完整代码示例 1、类 / 方法 2、main 函数 一、类用法 ---- 类用法 : 使用时先声明 , 如果不声明 , 则表示该类的是 Object getData2(T arg){ T data = arg; return data; } 指定的方法 : 指定 方法 的类 , 方法 的声明 <String, Integer>getData2("Mouse"); 不指定的方法 : 方法 中 也可以不声明类型 , 传入的参数是 T 类型 , 如果给传入参数设置 String 如果给传入参数设置 String , 隐含将 T 设置为 String 类型 String data2 = student.getData2("Mouse"); 三、通配符 <? = (String) student1.getData(); 四、安全检查 ---- 注意下面 2的用法 , 推荐使用第一种方法 ; // 的安全检查

    12.4K30编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Java 简介 ( 类 | 方法 | 静态方法的 | 类与方法完整示例 )

    的性能 ; 二、类 ---- 类 : 在 类名后面 使用 <T> 声明 , 则在该类中 , 可以使用该类型 T 类型 ; 特别注意 , 该类中的 如下 2 个方法 不是 方法 ---- 方法 : 在方法的 返回值前 , 使用 <T> 声明的方法 , 是方法 ; 将某个类型作为参数传入 ; 个数 : 该方法是方法 , 且指定了 2 , 的个数可以有很多个 , 是将某个类型作为参数传入 * 方法指定 , 写法如下 * * 该方法是方法 * 方法指定了 2 * return */ public <T, A> T getData2(T arg){ T data = arg; return data; } , 是将某个类型作为参数传入 * 方法指定 , 写法如下 ; * * 该方法是方法 * 方法指定了 2 *

    23.5K30编辑于 2023-03-29
  • 来自专栏全栈程序员必看

    擦除)【java基础—-

    1.3 定义(类、方法(方法返回值是的,方法在普通类和类里)): 1.4特点: 对于特点(1)举个例子 : 没有使用时的异常抛出 对于特点(2)访问时不需要类型转换 (拆箱),举例子List list = new ArrayList(); 对于特点(3)不同之间不能相互赋值,举例 对于特点(3)不存在多态,举例 2.类、接口、方法 不能存储基本类型int,double… 5.擦除 5.1 擦除概念: 5.2 由于擦除出现的错误举例: ---- ---- 1.什么是 1.1概念: Java是J2 SE1.5 定义一个方法(不在类里):publilc <T> void testMethod() { } 或定义一个返回值类型是的方法(不在类里): public <T> T testMethod2 (所以人家的真心不允许被辜负,就没多态了) 2.类、接口、方法 2.1类 语法:类名<T,……..> 举例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    4.5K51编辑于 2022-11-02
  • 来自专栏冷环渊的全栈工程师历程

    Java进阶:【】认识方法,类,接口和通配符

    ,默认为Object类型 2.父类传入类型实参,子类既可以是类,也可以不是 3.父类传入类型实参,则子类必须是类,且子类的类型形参列表必须包含父类的类型形参列表 类的定义和实例化 = new test01<>(); gt2.sex ="男"; gt2.a("abc"); gt2.b(new String[]{"a","b","A"} ,那么子类在实例化的时候需要指定 static class SubGeneric2<e> extends test01<e>{ } 类可以定义多个参数类型 ,不是带的方法就是方法,方法有要求:这个方法的参数类型要和当前类的方法的无关 换个角度:方法对应的那个参数类型和当前所在的这个类,是否为类,是啥,无关 方法定义的时候 = new test02(); t2.a("1"); t2.b("abc"); } } 参数存在继承的情况 前面两个引用类型,都可以赋值,为什么list不行?

    4.8K10发布于 2021-11-29
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】 ① ( 类 | 参数 | 型函数 | 多参数 | 类型约束 )

    文章目录 一、类 二、参数 三、型函数 四、多参数 五、类型约束 一、类 ---- 定义一个 类 , 将 参数 T 放在 尖括号 <T> 中 , 该参数放在 类名后 Student<Int> = Student(18) student2.log() } 执行结果 : item : Tom item : 18 二、参数 ---- 通常情况下 , 参数 Student<Int> = Student(18) println(student2.logT(student2.item)) } 执行结果 : item : Tom Tom item : Student<Int> = Student(18) println(student2.logT {true}) } 执行结果 : student 实例对象中 , T 的实际类型是 String 类型 , 在 logT 中 R 的类型是 Double 类型 ; student2 实例对象中 , T 的实际类型是 Int 类型 , 在 logT 中 R 的类型是 Boolean

    5.1K10编辑于 2023-03-30
  • 来自专栏全栈程序员必看

    Java 擦除_擦除

    = new ArrayList<String>().getClass(); System.out.println(a1 == a2); } } 如果仅凭直觉来看,该程序可能会输出 Java是使用类型擦除来实现的。这表示在运行过程中任何和类型有关的信息都会被擦除,所有在运行中 ArrayList和ArrayList的具体信息都被擦除成它们的原生类型即ArrayList类型。 由于擦除机制,不能用于显示地引用运行时类型的操作之中,例如转型、new表达式和instanceof操作。 若在内部必须使用类型操作时,可以在运行时采用反射的方法将正在运行的类信息添加到内部,这种方法称为补偿。 ."); } } public class TestF2<T> { Class<T> type; public TestF2(Class<T> type) {

    3.3K40编辑于 2022-11-01
  • 来自专栏码思客

    接口,类和通配符

    接口和接口的定义,public interface man<T>{...}。在接口名后面加上类型参数T,这样就定义了一个接口。 ? ,在类名后面加上类型参数T,这样就定义了一个类。 ? 类 和接口不同,类有构造器,并且构造器也可以使用类型参数。 2.再看另一个问题,如果父类是类型,如何定义子类? ? 类的子类 如果将一个类定义为类,那么在创建该类的子类的时候不能将子类直接继承该类,而是需要指定父类的类型。 提供了一个通配符用于接收所有类型的类型。 的通配符 ? 通配符 的通配符可以很好的解决所有类型父类的问题,使用<?>来作为类或接口的参数,这样就可以抽象出类的父类。 在访问通配符List<?>的时候,集合里的元素只能当做Object来访问,因为在定义的时候只是一个通配符,不是具体类型,所以不能进行类型转换只能作为Object访问。 2.不能使用add方法。

    3.4K20发布于 2019-07-04
  • 来自专栏编程学习之路

    的初步认识(2

    参考文章:Java 中的(两万字超全详解)_java -CSDN博客 绝对要注意的一点 在java中,我们无法直接实例化的类型参数对象. 类型擦除 类型擦除的定义 在Java中,类型擦除是指在编译时期对类型进行擦除,将类型转换为原始类型。 1.当我们在创建一个 ArrayList< Integer > 集合的时候,ArrayList 可以看作是演唱会场馆,而< T >就是场馆的验票系统,Integer 是验票系统设置的门票类型; 2. ,其内的所有信息都会被擦除,并且类型参数 T 会被统一替换为其原始类型(默认是 Object 类,若有 extends 或者 super 则另外分析); 2.在信息被擦除后,若还需要使用到对象相关的信息 这是因为Java的是在编译时期进行类型擦除的,即在运行时信息被擦除,只保留原始类型,我们不清楚其原本的具体类型。因此,编译器不允许直接创建对象。

    36810编辑于 2024-04-21
  • 来自专栏项目文章

    Java集合学习2

    Generic 类 写一个类 语法:类名 T就代表数据类型的占位符 运行的时候要表示一种引用类型,不可以是实际类型,同时可以写多个占位符,用逗号隔开即可。 使用创建变量 还可以添加方法作为方法的参数 还可以使用作为方法的返回值 需要注意 的是不同对象不能相互 复制。 写一个接口 是不能使用创建 静态常量的,即不能new这个。 由于接口是不能实例化的,所以需要写一个实现类。 在实现接口的时候必须在使用的 时候必须写清楚什么类。 联动类和接口。 方法 如果是T那么就是就是返回T 类型的,void就不返回 就可以了。 好处 集合 参数化的类型、类型安全的集合,强制集合元素的类型必须一致。

    14510编辑于 2024-06-07
  • 来自专栏程序那些事

    知多少

    简介 是JDK 5引入的概念,的引入主要是为了保证java中类型的安全性,有点像C++中的模板。 但是Java为了保证向下兼容性,它的全部都是在编译期间实现的。 本文将会详细讲解在java中的使用,以避免进入误区。 接下来我们考虑的情况,List<Number> 是不是 List<Integer>的父类呢?很遗憾,并不是。 我们得出这样一个结论:不是协变的。 为什么呢? >[10];List<String>[] list2 = new List<String>[10]; //compile error 在使用中会遇到的问题 因为类型擦除的原因,List<String 所以我们在使用时候的一些操作会遇到问题。 假如我们有一个的类,类中有一个方法,方法的参数是,我们想在这个方法中对参数进行一个拷贝操作。

    1.5K10发布于 2020-07-08
  • 来自专栏韩曙亮的移动开发专栏

    【Flutter】Dart ( 类 | 方法 | 特定类型约束的 )

    / 创建类对象 , 类型设置为 int 类型 Cache<int> cache2 = Cache(); // 调用方法时 , 传入的参数必须符合对应的类型 // value2 = cache2.getCachedItem("age"); print("测试, 类型整型, 获取的缓存内容为 ${value2}"); } } 打印结果 : I/flutter , 获取的缓存内容为 ${value}"); // 创建类对象 , 类型设置为 int 类型 Cache<int> cache2 = Cache(); // 调用方法时 , 传入的参数必须符合对应的类型 // 约束 : 使用时会进行类型检查约束 , 如果设置错误的类型 , 编译时报错 cache2.setCacheItem("age", 18 ); // 获取缓存内容 int value2 = cache2.getCachedItem("age"); print("测试, 类型整型, 获取的缓存内容为 ${value2

    8.3K00编辑于 2023-03-28
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    Dart中的方法、类、接口

    是为了解决方法逻辑相同,而数据类型不同造成的代码冗余问题。 1. 方法 ? 为了能在一个方法里实现传入什么数据类型就返回什么数据类型,可以利用将方法写成下面这样: ? 2. 类 实现一个类,List里面可以增加任意类型的数据,但是每次增加的数据类型必须统一。 ? 3. 接口 实现数据缓存的功能:有文件缓存、和内存缓存。

    5.7K10发布于 2020-12-10
  • 来自专栏阿杜的世界

    Java基础(二)接口方法# 总结

    本文首发于个人网站:Java中的(二) 可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。 这篇文章主要介绍应用于接口、方法和匿名内部类的一些知识点和使用案例,也包括《Java编程思想》中对应的练习题的解读。 接口 应用于接口,是工厂方法设计模式的一种应用。 在中,基本类型无法作为类型参数,但是Java提供了自动打包和拆包的功能; 方法 知识点总结 如果使用方法可以取代将整个类(或接口)化,那么就应该只使用方法; static方法要使用能力 在使用类的时候,必须在创建对象的时候指定类型参数的值,但是在使用方法时候,不必指明参数类型。 、方法 本节练习用的代码:LearnJava

    3.9K30发布于 2018-08-06
  • 来自专栏贾维斯Echo的博客

    Go 约束

    Go 约束 目录 Go 约束 一、引入 二、最宽松的约束:any 三、支持比较操作的内置约束:comparable 四、自定义约束 五、类型集合(type set) 六、简化版的约束形式 七、约束的类型推断 八、小结 一、引入 虽然是开发人员表达“通用代码”的一种重要方式,但这并不意味着所有代码对所有类型都适用。 2018 年 8 月由伊恩·泰勒和罗伯特·格瑞史莫主写的 Go 第一版设计方案中,Go 引入了 contract 关键字来定义类型参数的约束。 所以,在 Go 版本中,interface 语法也得到了一些扩展,也正是这些扩展给那些刚刚入门 Go 的 Go 开发者带来了一丝困惑,这也是约束被认为是 Go 的一个难点的原因。 ,Go 可以根据型函数的实参推断出类型实参。

    1.8K10编辑于 2023-12-29
  • 来自专栏bit哲学院

    java边界

    一、实际类型   参可以使用实际类型。也就是类似于List<String>,直接指定的类型。这时候的表现最容易理解,输入和输出都为实际类型。 所以,不知道作者所说的we got (1)E(2)V(4)I(5)L(0)...是什么意思。可能是java某个老版本运行的结果。   我们可不想让(1)E(2)V(4)I(5)L(0)充满我们的代码。 2.上界通配符   上界通配符为”extends”,可以接受其指定类型或其子类作为参。其还有一种特殊的形式,可以指定其不仅要是指定类型的子类,而且还要实现某些接口。 在虚拟机看来,List<E>这个类型只是普通的类型List而已,这种行为叫擦除(Type Erasure)。   那么在Java中是如何如何实现其目的的呢?Java的充分利用了多态性。 并在相应的地方自动生成checkcast字节码进行类型检查和转换,这样就既可以实现,又不需要在字节码层面的进行改动来支持。这样的叫做伪。   

    2.8K10发布于 2020-12-03
  • 来自专栏菩提树下的杨过

    委托示例

    EventArgs e)         {             MyClass<string, string> _MyClass = new MyClass<string, string>();//实例化类 _MyDelegate = new MyDelegate<string, string>(DemoMethod);//实例化_MyClass的委托             MessageBox.Show (_MyClass.GetValues("Jimmy's Book","Jimmy"));//此时编译器已经能确定参数的类型为String,进而通过委托调用方法DemoMethod           

    2K60发布于 2018-01-22
  • 来自专栏技术小屋-未分类

    Java——基本总结(通配符、接口、方法)

    = (Double)p.getX(); double y2 = (Double)p.getY(); System.out.println("x="+x2+",y="+y2 2的通配符? 3、接口(重点) 在接口上用,就是接口。 4、方法 若在一个方法使用了,这个方法就称为方法。 5、总结 1)解决的问题就是向下转型所带来的安全隐患; 2的本质:类的属性或方法的参数可以由用户在使用时动态设置; 3)通配符?、? extends 类、? super 类。

    4.1K30发布于 2020-09-25
  • 来自专栏用代码征服天下

    Java基础系列2:Java

    2初体验:一个被举了无数次的栗子 List arrayList = new ArrayList(); arrayList.add("aaaa"); arrayList.add(100); for * 2)只有声明了<T>的方法才是方法,类中的使用了的成员方法并不是方法。 * 3)<T>表明该方法将使用类型T,此时才可以在方法中使用类型T。 list2.getClass()); } } 在这个例子中,我们定义了两个ArrayList数组,不过一个是ArrayList<String>类型的,只能存储字符串;一个是ArrayList <Integer>类型的,只能存储整数,最后,我们通过list1对象和list2对象的getClass()方法获取他们的类的信息,最后发现结果为true。 2、类型擦除后保留的原始类型 原始类型 就是擦除去了信息,最后在字节码中的类型变量的真正类型,无论何时定义一个,相应的原始类型都会被自动提供,类型变量擦除,并使用其限定类型(无限定的变量用Object

    79750发布于 2019-11-10
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】总结 ★ ( 类 | 参数 | 型函数 | 多参数 | 类型约束 | 可变参数结合 | out 协变 | in 逆变 | reified 检查参数类型 )

    Student<Int> = Student(18) student2.log() } 执行结果 : item : Tom item : 18 二、参数 ---- 通常情况下 , 参数 Student<Int> = Student(18) student2.log() } 执行结果 : item : Tom item : 18 三、型函数 ---- 函数 的 参数 或 返回值 Student<Int> = Student(18) println(student2.logT(student2.item)) } 执行结果 : item : Tom Tom item : Student<Int> = Student(18) println(student2.logT {true}) } 执行结果 : student 实例对象中 , T 的实际类型是 String 类型 , 在 logT 中 R 的类型是 Double 类型 ; student2 实例对象中 , T 的实际类型是 Int 类型 , 在 logT 中 R 的类型是 Boolean

    5.8K11编辑于 2023-03-30
领券