泛型构造函数怎么调用

问题描述

classMyClass<X>{<T>MyClass(Tt){//...}}

上面那个MyClass类怎么调用这个构造函数初始化,写成下面:MyClass<Integer>myObject=new<String>MyClass<>("");编译不通过啊,应该要怎么写?

解决方案

解决方案二:
List<Integer>list=newArrayList<Integer>()难道不是一样的?
解决方案三:
classMyClass<X>{<T>MyClass(Tt){}}publicclassTest{publicstaticvoidmain(Stringargs[]){Integeri=0;MyClass<String>mc=newMyClass<String>(i);}}编译能通过

解决方案四:
如下:MyClass<Integer>myObject=newMyClass<Integer>("");
解决方案五:
MyClass<Integer>myObject=newMyClass<Integer>("");。。。。都两星了。。。。
解决方案六:
MyClass<Integer>myObject=new<String>MyClass<>("");

貌似Integer不是String的泛型类吧,这样实例化对象肯定不能编译过...
解决方案七:
一个是Integer一个是String当然是通不过的。
解决方案八:
对于publicstatic<T>TgetMiddle(T[]a){returna[a.length/2];}

我们可以这么显式的调用:Stringmiddle1=ArrayAlg.<String>getMiddle(names);

那上面那个构造函数如何用这种方式呢?
解决方案九:
引用楼主kypfos的回复:

JavacodeclassMyClass<X>{<T>MyClass(Tt){//...}}上面那个MyClass类怎么调用这个构造函数初始化,写成下面:MyClass<Integer>myObject=new<String>MyClass<>("");编译不通过啊,应该要怎么写?

为什么不写成MyClass<Integer>myObject=new<String>MyClass<Integer>("");?
解决方案十:
引用楼主kypfos的回复:

JavacodeclassMyClass<X>{<T>MyClass(Tt){//...}}编译不通过啊,应该要怎么写?

MyClass<Integer>myObject=newMyClass<Integer>(100);MyClass<String>myObject=newMyClass<String>("abc");
解决方案十一:
类似code=Java]MyClass<String>myObject=newMyClass<String>;[/code]
解决方案十二:
publicstatic<T>TgetMiddle(T[]a){}
解决方案十三:
是这样的,可以编译引用2楼goldenfish1919的回复:

JavacodeclassMyClass<X>{<T>MyClass(Tt){}}publicclassTest{publicstaticvoidmain(Stringargs[]){Integeri=0;MyClass<String>mc=newMyClass<String>(i)……

解决方案十四:
MyClass<Integer>myObject=new<String>MyClass<Integer>("");原来这样也可以,长见识了!

解决方案十五:
构造函数怎么写啊能说清楚点吗?
解决方案:
MyClass<Integer>myObject=newMyClass<Integer>("");你给的两个数据类型不能隐士转换,肯定是不能的。
解决方案:
MyClass<X>myObject=new<T>MyClass<X>(Tt)这个是的!
解决方案:
泛型不是很了解,不过基本上都说到了。

时间: 2024-08-08 04:09:40

泛型构造函数怎么调用的相关文章

C++构造函数中调用虚函数

谈谈关于构造函数中调用虚函数的情况,仅讨论单继承,不考虑虚拟继承和多重继承. 测试平台:VS2013 + Win7X64 一个例子: #include <stdlib.h> #include <stdio.h> class Base { private: int __data; public: Base() { this->Func(); } public: virtual void Func() { printf("Base::Func"); } };

C++聚合关系类的构造函数的调用顺序详解_C 语言

如图,表示一个聚合关系 下面就用简单的代码来实现 #pragma once class Engine { public: Engine(); ~Engine(); }; Engine.h #include <iostream> #include "Engine.h" using namespace std; Engine::Engine() { cout << "调用构造函数:Engine()" << endl; } Engine

各位好,我想知道这个地方为什么父类构造函数被调用了

问题描述 function A(){ // just like componentalert('A constructor');this.initComponent();}A.prototype = {constructor : A,initComponent : function() {alert('a initComponent');}}//var a = new A();B = Ext.extend(A, { // just like windowinitComponent : funct

拷贝构造函数的调用时机

[拷贝构造函数的调用时机] 1.对象以值传递的方式传入函数参数 2.对象以值传递的方式从函数返回 3.对象需要通过另外一个对象进行初始化    拷贝构造函数原型,假设类名为Foo,则copy constructor为: Foo( const Foo &obj); 限定符必须是const,且必须是引用.

c++ 构造函数中调用虚函数的实现方法_C 语言

我们知道:C++中的多态使得可以根据对象的真实类型(动态类型)调用不同的虚函数.这种调用都是对象已经构建完成的情况.那如果在构造函数中调用虚函数,会怎么样呢? 有这么一段代码: class A { public: A ():m_iVal(0){test();} virtual void func() { std::cout<<m_iVal<<' ';} void test(){func();} public: int m_iVal; }; class B : public A {

父类构造函数-java调用super 可以不放在第一行?

问题描述 java调用super 可以不放在第一行? 今天看mybatis插件源码时候,发现SqlSessionTemplate中有这么一行: 不能理解:java调用super()不是必须放在构造器的第一行吗? 为什么这里不是放在第一行? 解决方案 应该是不可以的呀! 楼主的代码真的是源码 吗?是不是通过反编译工具反编译出来的,反编译工具在做反编译的时候可能会出问题的. 解决方案二: 如果是构造函数,不可以,其他可以 解决方案三: 找到答案时.希望楼主分享一下 解决方案四: this() sup

为什么构造函数直接调用需要用this而不是用类名,说说原理啊

问题描述 <div class="iteye-blog-content-contain" style="font-size: 14px"></div>public class Person{ String name; int age; public Person(String name){ this.name = name; } public Person(String name,int age){ this(name); this.age

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

/* 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 */ import static java.lang.System.out; public class PersonDemo { public static void main(String[] args) { //*********测试父类与子类之间的循环调用的问题 out.println("main1&quo

指针-调用哪个构造函数?C++,结构体

问题描述 调用哪个构造函数?C++,结构体 struct LinkNode { T data; //数据域 LinkNode<T>*link; //链指针域 LinkNode(LinkNode<T> *ptr =NULL) {link=ptr;} LinkNode(const T&item,LinkNode<T> *ptr=NULL) { data=item; link=ptr; } }; 如果有下面代码 T value; LinkNode *desptr=fi