首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果我不需要在泛型类中指定类型,我应该使用<?>吗

如果您不需要在泛型类中指定类型,可以使用"?"通配符。通配符"?"表示未知类型,可以在需要使用泛型的地方灵活地接受任意类型的参数。

使用"?"通配符的主要优势是增加代码的灵活性和可重用性。它允许您编写适用于多种类型的代码,而不仅仅限于特定的类型。这在某些情况下非常有用,例如当您需要处理不同类型的集合或者在方法参数中接受不同类型的对象。

然而,需要注意的是,使用"?"通配符会限制您对泛型参数的操作。因为您无法确定具体的类型,所以只能执行一些与类型无关的操作,例如获取对象的引用或者调用与类型无关的方法。无法对通配符类型进行具体化的操作,例如添加元素到集合中或者调用特定类型的方法。

在腾讯云的云计算服务中,与泛型相关的产品和服务主要包括:

  1. 腾讯云函数(SCF):腾讯云函数是一种事件驱动的无服务器计算服务,支持多种编程语言,包括Java、Python、Node.js等。您可以使用腾讯云函数来编写灵活的、与类型无关的函数,处理各种类型的事件。
  2. 腾讯云容器服务(TKE):腾讯云容器服务是一种高度可扩展的容器管理服务,支持使用Docker容器部署和管理应用程序。您可以在容器中运行各种类型的应用程序,而无需关注具体的类型。
  3. 腾讯云数据库(TencentDB):腾讯云数据库提供多种类型的数据库服务,包括关系型数据库(如MySQL、SQL Server)、NoSQL数据库(如MongoDB、Redis)等。您可以使用腾讯云数据库来存储和管理各种类型的数据。

请注意,以上产品和服务仅作为示例,具体的选择应根据您的实际需求和项目要求进行评估。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

接口,通配符

java零基础入门-高级特性篇(六) 使用位置,除了最常见的约束集合元素,还可以使用在接口,,方法上面。...1.如果集合加上了,那么如果添加的元素是的子类或者父能添加进去? ?...在定义方法的时候,他不需要具体指定是什么数据,但是一旦你调用使用这个方法,就必须指定这个参数具体是什么。 ?...使用 由于方法要在定义的时候就指定,所以如果需要使用含有的方法,必须在创建该对象的时候就需要指定类型,因为使用的时候必须指定类型,不论是普通参数还是参数。...List提供的add(E e)方法是需要指定类型的,这里不是E?这是个类型啊?为什么要提供类型?因为这是定义,一旦要使用add(E e)方法,必须指定具体的类型

2.3K20

编写高质量代码改善C#程序的157个建议

同时,它减少了方法的转型,确保了类型安全。委托本身是一种引用类型,它保存的也是托管堆对象的引用,只不过这个引用比较特殊,它是对方法的引用。...本文主要学习记录以下内容:   建议35、使用default为类型指定初始值   建议36、使用FCL的委托声明   建议37、使用lambda表达式代替方法和匿名方法 建议35、...使用default为类型指定初始值   有些算法,比如集合List的Find算法,所查找的对象有可能会是值类型,也有可能是引用类型。...要让编译器接收为一个类型参数指定一个初始值,最妥当的办法就是使用default关键字。...,我们不需要在Main方法外部声明两个方法了,可以直接在Main这个工作方法完成所有的代码编写,而且不会影响代码清晰性。

44550

转:Java ,你了解类型擦除

转载自 frank909 的文章 《Java ,你了解类型擦除?》 ---- ,一个孤独的守门者。 大家可能会有疑问,为什么叫做是一个守门者。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

1.4K10

【Java基础】Java使用

List list=new ArrayList(); list.add(1); list.add("测试"); 在如上代码没有指定类型,但是程序依然可以运行,并且无任何异常;可在将数据读出来后...3 的定义 定义要在名或接口名后指定,格式如: public class Test{} 这里的大写英文字母并不是必须是E,但在开发规约一般使用E、K、V、T来定义...4 使用 定义了后,可在中代码即可使用该字母作为数据类型来定义变量。...Test t=new Test(); 现在对它进行了初始化,将E赋予了String类型,所以现在的test变量就是String类型。...并且指定了它的为String类型,也就是说我们接下来要在List添加元素的话,只能添加String类型,添加其它的类型元素则会报错。

54120

揭开Java 类型擦除神秘面纱

Test test1 = new Test(); Test test2 = new Test(); 只要在创建实例的时候,在尖括号赋值相应的类型便是。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

1.1K10

揭开Java 类型擦除神秘面纱

Test test1 = new Test(); Test test2 = new Test(); 只要在创建实例的时候,在尖括号赋值相应的类型便是。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

1.3K30

Java,你了解类型擦除

Test test1 = new Test(); Test test2 = new Test(); 只要在创建实例的时候,在尖括号赋值相应的类型便是。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

2.3K20

揭开Java 类型擦除神秘面纱

Test test1 = new Test(); Test test2 = new Test(); 只要在创建实例的时候,在尖括号赋值相应的类型便是。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

95740

关于,你可能不知道的事儿

Test test1 = new Test(); Test test2 = new Test(); 只要在创建实例的时候,在尖括号赋值相应的类型便是。...但是,为了避免混淆,如果在一个存在方法,那么两者的类型参数最好不要同名。...但是,在现实编码,确实有这样的需求,希望能够处理某一范围内的数据类型,比如某个和它的子类,对此 Java 引入了通配符这个概念。 所以,通配符的出现是为了指定类型范围。...,之前类型参数部分如果没有指定上限,如 则会被转译成普通的 Object 类型如果指定了上限如 则类型参数就被替换成类型上限。...可量也正因为类型擦除导致了一些隐患与局限。 但,还是要建议大家使用,如官方文档所说的,如果可以使用的地方,尽量使用

1.3K10

一文搞定知识

通过前面的描述部分读者应该看出来了 Stack 不是类型安全的,因此在不使用的情况下,我们如果修改 Stack 并保证它是类型安全的,并且要求它存储指定类型的话,我们必须这么做: public...3.默认值 当我们需要在的构造函数中部分属性进行初始化,而其他属性不进行初始化,但是我们在开发无法确定传入类型参数是什么,因此我们也无法通过具体的值设置默认值。...,在 C#7 如果可以推断出数据类型的话是不需指定参数的。...这里有一点需要注意如果同时指定了多种约束,那么类型约束必须位于第一位(第一个出现),并且约束是不允许使用多个类型约束的,这是因为我们的代码不可能从多个不想管的中派生出来,同样类型约束也不能指定密封或者不是类型...多约束 我们可以为任意类型的参数指定任意水昂的接口约束,所有的接口约束需要用逗号分割。如果存在多个不同类型的约束,针对每种约束都需要写一个 where 关键字,不同种类约束之间不需要用任何符号分割。

97410

初探Java类型擦除

而在1.5之前的版本,为了让Java的具有通用性,参数类型和返回类型通常都设置为Object,可见,如果需要不用的类型,就需要在相应的地方,对其进行强制转换,程序才可以正常运行,十分麻烦,稍不注意就会出错...Generic();resule.setData(hello); // 通过获取数据Hello data = result.getData(); 当然如果不传入指定类型的话,的方法或者成员变量定义的类型可以为任意类型...而在Java这种强类型语言中,一个函数的参数类型是固定不变的。那如果要在Java实现类似于JavaScript那样的通用函数该怎么办呢?这也就是为什么我们需要的通配符。...可能会有人说,用啊,不就是解决这个问题的必须指定一个特定的类型。正式因为解决不了...才提出了的通配符。 4.3. 无界通配符 无界通配符就是?。...可以看到,如果我们给制定了上限,擦除之后就会被替换成类型的上限。而如果没有指定,就会统一的被替换成Object。相应的,定义的方法的类型也是如此。

84630

细说java系列之

可以在运行时进行类型检查?带着这些疑问,我们一步步深入范。 范有什么用途 1. 使用Java集合时明确指定元素类型 ? 在使用Java提供的集合时,必须指定具体的类型。...-Xdiags:verbose 重新编译以获得完整输出 1 个错误 也就是说,通过可以在我们使用Java集合时,在编译期就避免将不正确的类型添加到集合对象,而且从语法上就可以很方便地看出集合对象存放的对象类型...定义 首先,我们来看看如果使用,我们如何解决问题。...,在需要存放指定类型的对象时,只需要在实例化Box对象时明确指定对象类型即可。...如上Box的set/get方法并不是方法。 方法的作用似乎没有那么大,但是在某些特定的场合使用方法会带来一定的便利。 4.

57720

C#高级语法之约束,类型安全、逆变和协变(思想原理)

其实就是一个不确定的类型,可以用在和方法上,在声明期间没有明确的定义类型,编译完成之后会生成一个占位符,只有在调用者调用时,传入指定类型,才会用确切的类型将占位符替换掉。...} //具体使用CName //返回值为CName并且接受一个类型为CName类型的对象 public CName GetC(CName c) {...二、约束 约束就是对(传入的类型)进行约束,约束就是指定类型必须满足某些特定的特征,例如:可以被实例化、比如实现Animal等等 我们来看一下官方文档上都有那些约束: 说明 对多个参数应用约束...: //微软官方例子 class Base { } class Test where U : struct where T : Base, new() { } 使用的话只需要在后面添加...协变的话相信应该很好理解,将子类转换为父,兼容性好,解决了类型安全(因为子类转父是肯定可以转换成功的);而协变作为返回值是百分百的类型安全 “逆变为什么又是解决了类型安全呢?子类转父也安全

6.8K30

Java基础入门笔记07——

用来限制集合的存入类型指定一种——保证类型安全 Java只在编译过程中生效,编译结束就清除相关信息,信息不会进入运行阶段 使用 1. package study1118;...A T //的定义 class 名 { } //中所有类型都将会时新建对象时,new的时候指定的那种类型 class A{ private...(没有方法体) //需要在实现中进行重写 } //实现接口IB的抽象方法时,如果未传入实参(此处的实参是某一种),默认为定义接口时所指定类型 class B1 implements...>(); //新建B2对象时候,不需指定类型,因为定义B2时已经限制了(此处为String) B2 b2 = new B2(); } } 3.方法 class...(this.e);//编译报错——因为无法从静态上下文中引用非静态 变量 this } // 静态方法如果使用,应该在定义静态方法时同时指明 public static

23720

Java详解:和Class的使用方法的详细使用实例

参考链接: Java的main()函数是强制性的 一、引入  1、是什么  首先告诉大家ArrayList就是。那ArrayList能完成哪些想不到的功能呢?...唯一不同的是,要在函数定义的在返回值前加上标识; 5、其它用法:Class传递及数组  (1)、使用Class传递Class对象 有时,我们会遇到一个情况,比如,我们在使用...也就是类型转换异常啦。 但是,若是使用了这个之后,那么我们的某个操作所需要的返回结果是什么类型,就可以 传入什么类型,而且在实际取得返回结果的时候,就不需使用类型转换,这样就很好的达到了目的。...1,一个是表示某一个类型的参数。为的传递某一的参数对象  2,另一个则是传递的不是参数,而是代表Class,某一个。 恰巧使用过,就正好记录一下实际使用实例。     ...,主要是要使用参数对象,而不是上面的那个使用的参数的Class   这方法提出来,主要是因为,直接使用list的addAll()方法,如果添加的是null,那么就会抛异常。

3.2K50

java的强迫症患者

不是应该输出两个价格?这个东西叫异常,异常就是程序发生了错误,程序给出的错误信息。看看错误信息说了啥,ClassCastException,这个异常叫做类型转换异常。...上面例子这个常量其实是没有起到作用的,因为在shopping3这个,将铅笔这个赠品强制转换到父商品,调用getPrice()方法是获取父的price属性,并不是子类赠品里面这个设置为0的常量...第二,Shopping3强制转换的时候,将第二个元素强制转换为子类Present,这样打印的时候使用的就是子类PRICE常量。 集合不加是可以的,但是如果元素类型不一致,强迫症犯了浑身难受。...的语法变化 在java5的时候,有了治好了集合的强迫症,List,Set,Map等集合都可以使用来规范元素的类型。但是有个缺点就是写起来太啰嗦了。...不需要在实现的时候再写一遍类型

54340

第08天Java机制

也就是说在使用过程,操作的数据类型指定为一个参数,这种参数类型可以用在、接口和方法,分别被称为接口、方法。...引入的意义在于: 适用于多种数据类型执行相同的代码 我们通过一个例子来阐述,先看下下面的代码: 类型使用指定不需要强制类型转换(类型安全,编译器会检查类型) 看下这个例子: private...在创建 List 集合时,同样使用,因此在获取集合的元素时也不需要将 bookList.get(i) 代码强制转换为 Book 类型,程序会隐式转换。...如果使用方法可以取代化,那么就应该使用方法。另外,对一个 static 的方法而言,无法访问类型参数。...(Class cs,int userId){} 一般来说编写 Java 方法,其返回值类型至少有一个参数类型应该,而且类型应该是一致的,如果只有返回值类型或参数类型之一使用,那么这个方法的使用就被限制了

16830

带你深挖Java类型擦除以及类型擦除带来的问题

如果指定,那么这个ArrayList可以存储任意的对象。...使用add方法添加一个整型,在IDE,直接会报错,说明这就是在编译之前的检查,因为如果是在编译之后检查,类型擦除后,原始类型为Object,是应该允许任意引用类型添加的。...再说,你如果又用list2往里面add()新的对象,那么到时候取得时候,怎么知道取出来的到底是String类型的,还是Object类型的呢? 所以,要格外注意,的引用传递的问题。...那么,运行时进行类型查询的时候使用下面的方法是错误的 if( arrayList instanceof ArrayList) 3-6.在静态方法和静态的问题 的静态方法和静态变量不可以使用所声明的类型参数...,在方法中使用的T是自己在方法定义的 T,而不是的T。

1.6K40

带你深挖Java类型擦除以及类型擦除带来的问题

如果指定,那么这个ArrayList可以存储任意的对象。...使用add方法添加一个整型,在IDE,直接会报错,说明这就是在编译之前的检查,因为如果是在编译之后检查,类型擦除后,原始类型为Object,是应该允许任意引用类型添加的。...再说,你如果又用list2往里面add()新的对象,那么到时候取得时候,怎么知道取出来的到底是String类型的,还是Object类型的呢? 所以,要格外注意,的引用传递的问题。...那么,运行时进行类型查询的时候使用下面的方法是错误的 if( arrayList instanceof ArrayList) 3-6.在静态方法和静态的问题 的静态方法和静态变量不可以使用所声明的类型参数...,在方法中使用的T是自己在方法定义的 T,而不是的T。

3.8K21
领券