java-JAVA泛型类的初始化问题

问题描述

JAVA泛型类的初始化问题

有以下类定义:
public class Test> {
public Test(){
System.out.println("success");
}
}
请问各位如何创建实例?
PS:
Test> test=new Test>();
是不行的

解决方案

 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

class Test<U,V extends Test<U,V>> {
    public Test(){
        System.out.println("success");
    }
}

class A extends Test<String, A>
{

}

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        Test<String, A> t = new Test<String, A>();
    }
}

解决方案二:

http://www.cnblogs.com/ggjucheng/p/3352519.html

解决方案三:

 Test<String> test=new Test();

解决方案四:

这代码就算能编译,也没法执行,会引起无限递归。
你可以说下它实际应用的场合,看看有没有别的语法代替。

解决方案五:

java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了
泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射

时间: 2024-09-26 21:16:34

java-JAVA泛型类的初始化问题的相关文章

java代码-Java编程中的初始化问题

问题描述 Java编程中的初始化问题 为啥初始化字符串数组要放在无参构造函数中?放在外面时,就会报数组越界异常?代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.HashMap; import java.util.Map; import com.bdqn.hibernate.model.Student; publi

图文详解Java中class的初始化顺序_java

class的装载 在讲class的初始化之前,我们来讲解下class的装载顺序. 以下摘自<Thinking in Java 4> 由于Java 中的一切东西都是对象,所以许多活动 变得更加简单,这个问题便是其中的一例.正如下一章会讲到的那样,每个对象的代码都存在于独立的文件中.除非真的需要代码,否则那个文件是不会载入的.通常,我们可认为除非那个类的一个对象构造完毕,否则代码不会真的载入.由于static 方法存在一些细微的歧义,所以也能认为"类代码在首次使用的时候载入".

解析Java虚拟机中类的初始化及加载器的父委托机制_java

类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始化: 2.在静态代码块中进行初始化. 没有经过显式初始化的静态变量将原有的值.   一个比较奇怪的例子: package com.mengdd.classloader; class Singleton { // private static Singleton mInstance = new Singleton();// 位置1 // 位置

Java数组一定要初始化才能使用吗?

数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组.Java语言的数组变量是引用类型的变量,因此具有Java独有的特性. 在正常的Java开发中,使用Java数组之前,我们都会对数组进行初始化,为数组中的元素分配内存空间.赋值等,但Java数组一定要初始化吗?不初始化可以 么? 其实,java的数组变量是引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量,比如下面这个例子: public class T {

java static 静态变量初始化

java static 静态变量初始化 static final int NUMBER_OF_MONTHS = 12; static final float PI = (float) 22 / 7; 如果你想使一个静态变量在其它地方可以引用的话,如下 public static final int NUMBER_OF_MONTHS = 12; public static final float PI = (float) 22 / 7; 写在函数中 public class MainClass {

python-如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量

问题描述 如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量 1C #文本向量化 32x32 -> 1x1024def img2vector(filename): returnVect = [] fr = open(filename) for i in range(32): lineStr = fr.readline() for j in range(32): returnVect.append(int(lineStr[j])) return retu

C++和Java的缺省初始化问题

缺省初始化这是个基础问题,但往往有些迷惑,尤其是当你同一个时间有时写Java,有时写C++ ,总结如下: C++中基本类型只有作为全局变量才会进行,而对于类类型只要这个类具有一个无参构造函数则不管这个类的对象是局部变量还是全局变量,它都会进行缺省的初始化,甚至当一个对象通过缺省初始化机制进行创建时,这个对象的类类型数据成员也会根据它们自己的无参构造函数进行缺省的初始化. 但是若该类没有无参构造函数,那么若这个类没有任何构造函数,系统将会为这个类提供一个缺省的无参构造函数,理论上这个构造函数会讲这

Java 重写方法与初始化的隐患

虽然文章标题是Java, 但几乎所有面向对象设计的语言都遵守这个初始化流程, 感谢廖祜秋liaohuqiu_秋百万指出, 之前忘记提这个了. 前言 drakeet写了个和RecyclerView相关的GenerousRecyclerView, 原文提到了写这个的目的. 因为需要知道ViewGroup的clipToPadding属性, 所以调用了ViewGroup.getClipToPadding, 但这个方法是API level 21引入的. 我看了一下代码, ViewGroup是通过调用set

Java重写方法与初始化的隐患(转)

原文出处: Shawon 虽然文章标题是Java, 但几乎所有面向对象设计的语言都遵守这个初始化流程, 感谢廖祜秋liaohuqiu_秋百万指出, 之前忘记提这个了. 前言 drakeet写了个和RecyclerView相关的GenerousRecyclerView, 原文提到了写这个的目的. 因为需要知道ViewGroup的clipToPadding属性, 所以调用了ViewGroup.getClipToPadding, 但这个方法是API level 21引入的. 我看了一下代码, View