直接上代码:
public abstract class AnnotionMapper<T> implements Comparable<AnnotionMapper<T>>{
private Type _type;
public AnnotionMapper() {
Type superClass = getClass().getGenericSuperclass();// 获取该类的直接超类
_type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type get_type() {
return _type;
}
public void set_type(Type _type) {
this._type = _type;
}
@Override
public int compareTo(AnnotionMapper<T> o) {
return 0;
}
public static void main(String[] args) {
AnnotionMapper<ImageUrl> annotionMapper = new AnnotionMapper<ImageUrl>() {
};
//AnnotionMapper<ImageUrl> annotionMapper = new AnnotionMapper<ImageUrl>();
System.out.println(annotionMapper.get_type());
/*new TypeReference<T>() {
};*/
}
这段代码很奇怪。如果在类上加入abstract关键字也就是main方法中的new就可以获取类上的泛型,如果不加就是注释掉的方法获取泛型就不行。
百思不得其解:后来终于明白了,加了abstract关键字那么new的就是当前类的子类。所以可以获取,如果不加,当前类没有超类直接超类是java.lang.Object.所以不行。
分享到:
相关推荐
java学习-java中的abstract关键字
【Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)】 在Java编程语言中,面向对象编程是其核心特性之一。抽象类和抽象方法是面向对象编程中的重要概念,它们允许程序员创建一种通用的模板,用于定义一...
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写。 示例: public abstract class MyClass{} public abstract String myMethod(); 2. boolean boolean关键字用于定义布尔类型变量...
本文将详细介绍这两个概念以及`abstract`关键字的使用。 **抽象方法** 抽象方法是一种没有具体实现的方法,它只有声明而没有具体的功能代码。在PHP中,我们通过在方法声明前加上`abstract`关键字来定义一个抽象...
摘要:本资源旨在对 C# 中的 new、abstract、virtual、override、sealed 关键字进行详细的解释和比较,并提供实践代码示例,以帮助开发者更好地理解和使用这些关键字。 new 关键字: * new 关键字用于隐藏基类的...
Java编程语言中的`final`, `static`, 和 `abstract` 是三个非常重要的关键字,它们分别用于定义不同的特性。接下来,我们将详细探讨这些关键字的作用及其应用场景。 ### 抽象类(abstract) 1. **定义**:当一个类...
1. abstract关键字 abstract关键字可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。例如: ```java public abstract class ...
C#语言中有一些基本关键字,理解这些关键字对编写高效、可靠的C#程序至关重要。下面是C#语言中一些常用的关键字及其含义: 1. abstract:标识一个可以扩展但不能被实体化的类或方法。 在C#中,abstract关键字用于...
private 关键字用于限制对类成员(类、方法、变量)的访问,使得它们只能在声明它们的类内部被访问。这是最严格的访问级别,不允许其他类(包括子类)直接访问。如果一个成员没有明确的访问修饰符,那么默认情况下它...
在C#编程语言中,`abstract`和`virtual`关键字...理解这些关键字的使用和它们在多态性中的作用是C#编程的基础,对编写灵活、可扩展的代码至关重要。在实际开发中,正确使用这些关键字可以提高代码的可维护性和复用性。
下面我们将对这四个关键字进行详细的比较和介绍。 Override Override 关键字用于重写父类中的虚拟方法。 override 关键字可以用来重写父类中的虚拟方法,以便在子类中提供自己的实现。在 C# 中,如果子类想要重写...
以下是对C#关键字的整理和解释: 1. abstract关键字:用于修饰类、方法和属性。示例:修饰方法:public abstract void MyMethod(); 修饰类:abstract class BaseClass{} abstract关键字的主要用途是定义抽象类和...
理解这些关键字的含义和使用方式是掌握Java语言基础的关键。这些概念包括区分对象内部变量和方法、处理继承关系中的方法覆盖、定义类级别的属性和行为,以及创建不能被实例化的类和方法。掌握这些概念有助于编写更加...
3. static和abstract关键字不能共存,static关键字用于方便调用,abstract关键字用于给子类重写。 4. final和abstract关键字也是相互冲突的,final修饰的方法不能被重写,而abstract修饰的方法就是为了让子类重写的...
C#是一种面向对象的编程语言,其语法中包含一系列的关键字,这些关键字具有特殊的含义,对编译器来说是预定义的保留标识符。在C#中,关键字不能被用作变量名、函数名等标识符,除非在前面加上`@`符号。例如,`@if`是...
C#语言中,关键字是对编译器具有特殊意义的预定义保留标识符,这些关键字不能在程序中用作标识符,除非它们有一个 @ 前缀。下面将对C#语言中的关键字进行详细的解释: 访问修饰符 访问修饰符用于修改类型和类型...
下面将详细介绍这48个Java关键字,它们是构成Java程序的基础,掌握这些关键字对于理解和编写Java代码至关重要。 ### 1. abstract `abstract`关键字用于声明抽象类或抽象方法。抽象类不能实例化,主要用于提供子类...
在本文中,我们将对C#中的关键字进行总结和解释。 一、访问修饰符关键字 * public:访问修饰符,表示该成员可以从该类外部访问。 * private:访问修饰符,表示该成员只能在该类内部访问。 * protected:访问修饰符,...