首页
学习
活动
专区
工具
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这个工作方法中完成所有的代码编写,而且不会影响代码清晰性。

46250
  • 转: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类型,添加其它的类型元素则会报错。

    55420

    揭开Java 泛型类型擦除神秘面纱

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

    1.3K30

    揭开Java 泛型类型擦除神秘面纱

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

    1.1K10

    揭开Java 泛型类型擦除神秘面纱

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

    97040

    Java泛型,你了解类型擦除吗?

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

    2.3K20

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

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

    1.3K10

    一文搞定泛型知识

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

    1K10

    初探Java类型擦除

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

    88030

    细说java系列之泛型

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

    59620

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

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

    7.1K30

    Java泛型详解:和Class的使用。泛型类,泛型方法的详细使用实例

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

    3.3K50

    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

    25020

    java中的强迫症患者

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

    55740

    第08天Java泛型机制

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

    18930

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

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

    1.7K40

    BATJ面试必会之常见Java基础面试题(附答案)

    将类声明为abstract的,就等你你告诉编译器,它是不完全的不应该被实例化。当一段代码尝试实例化一个抽象类时Java编译器会抛错误。 抽象类必须有抽象方法吗? 不需要,抽象类有抽象方法不是强制性的。...根据你对这个泛型问题的回答情况,你会得到一些后续提问,比如为什么泛型是由类型擦除来实现的或者给你展示一些会导致编译器出错的错误泛型代码。请阅读我的Java中泛型是如何工作的来了解更多信息。...编写泛型方法并不困难,你需要用泛型类型来替代原始类型,比如使用T, E or K,V等被广泛认可的类型占位符。泛型方法的例子请参阅Java集合类框架。...面试官可能会要求你用泛型编写一个类型安全的类,而不是编写一个泛型方法。关键仍然是使用泛型类型来代替原始类型,而且要使用JDK中采用的标准占位符。 (7)编写一段泛型程序来实现LRU缓存?...(9)Array中可以用泛型吗?

    89620
    领券