`

对abstract关键字的另一番理解

    博客分类:
  • java
阅读更多
直接上代码:
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学习-java中的abstract关键字

    Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)

    【Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)】 在Java编程语言中,面向对象编程是其核心特性之一。抽象类和抽象方法是面向对象编程中的重要概念,它们允许程序员创建一种通用的模板,用于定义一...

    Java关键字大全 Java关键字

    abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写。 示例: public abstract class MyClass{} public abstract String myMethod(); 2. boolean boolean关键字用于定义布尔类型变量...

    PHP 抽象方法与抽象类abstract关键字介绍及应用

    本文将详细介绍这两个概念以及`abstract`关键字的使用。 **抽象方法** 抽象方法是一种没有具体实现的方法,它只有声明而没有具体的功能代码。在PHP中,我们通过在方法声明前加上`abstract`关键字来定义一个抽象...

    new、abstract、virtual、override,sealed关键字区别和使用代码示例

    摘要:本资源旨在对 C# 中的 new、abstract、virtual、override、sealed 关键字进行详细的解释和比较,并提供实践代码示例,以帮助开发者更好地理解和使用这些关键字。 new 关键字: * new 关键字用于隐藏基类的...

    Java final static abstract关键字概述

    Java编程语言中的`final`, `static`, 和 `abstract` 是三个非常重要的关键字,它们分别用于定义不同的特性。接下来,我们将详细探讨这些关键字的作用及其应用场景。 ### 抽象类(abstract) 1. **定义**:当一个类...

    Java关键字大全

    1. abstract关键字 abstract关键字可以修改类或方法。abstract类可以扩展(增加子类),但不能直接实例化。abstract方法不在声明它的类中实现,但必须在某个子类中重写。例如: ```java public abstract class ...

    1C#常用关键字及含义[归类].pdf

    C#语言中有一些基本关键字,理解这些关键字对编写高效、可靠的C#程序至关重要。下面是C#语言中一些常用的关键字及其含义: 1. abstract:标识一个可以扩展但不能被实体化的类或方法。 在C#中,abstract关键字用于...

    Java关键字及其作用

    private 关键字用于限制对类成员(类、方法、变量)的访问,使得它们只能在声明它们的类内部被访问。这是最严格的访问级别,不允许其他类(包括子类)直接访问。如果一个成员没有明确的访问修饰符,那么默认情况下它...

    深入理解C# abstract和virtual关键字

    在C#编程语言中,`abstract`和`virtual`关键字...理解这些关键字的使用和它们在多态性中的作用是C#编程的基础,对编写灵活、可扩展的代码至关重要。在实际开发中,正确使用这些关键字可以提高代码的可维护性和复用性。

    override abstract virtual interface比较

    下面我们将对这四个关键字进行详细的比较和介绍。 Override Override 关键字用于重写父类中的虚拟方法。 override 关键字可以用来重写父类中的虚拟方法,以便在子类中提供自己的实现。在 C# 中,如果子类想要重写...

    C#关键字整理-1

    以下是对C#关键字的整理和解释: 1. abstract关键字:用于修饰类、方法和属性。示例:修饰方法:public abstract void MyMethod(); 修饰类:abstract class BaseClass{} abstract关键字的主要用途是定义抽象类和...

    java关键字总结

    理解这些关键字的含义和使用方式是掌握Java语言基础的关键。这些概念包括区分对象内部变量和方法、处理继承关系中的方法覆盖、定义类级别的属性和行为,以及创建不能被实例化的类和方法。掌握这些概念有助于编写更加...

    Java相关知识点的学习(抽象类)

    3. static和abstract关键字不能共存,static关键字用于方便调用,abstract关键字用于给子类重写。 4. final和abstract关键字也是相互冲突的,final修饰的方法不能被重写,而abstract修饰的方法就是为了让子类重写的...

    C# 关键字word版

    C#是一种面向对象的编程语言,其语法中包含一系列的关键字,这些关键字具有特殊的含义,对编译器来说是预定义的保留标识符。在C#中,关键字不能被用作变量名、函数名等标识符,除非在前面加上`@`符号。例如,`@if`是...

    C#的关键字大全

    C#语言中,关键字是对编译器具有特殊意义的预定义保留标识符,这些关键字不能在程序中用作标识符,除非它们有一个 @ 前缀。下面将对C#语言中的关键字进行详细的解释: 访问修饰符 访问修饰符用于修改类型和类型...

    48个关键字

    下面将详细介绍这48个Java关键字,它们是构成Java程序的基础,掌握这些关键字对于理解和编写Java代码至关重要。 ### 1. abstract `abstract`关键字用于声明抽象类或抽象方法。抽象类不能实例化,主要用于提供子类...

    C#中的关键字

    在本文中,我们将对C#中的关键字进行总结和解释。 一、访问修饰符关键字 * public:访问修饰符,表示该成员可以从该类外部访问。 * private:访问修饰符,表示该成员只能在该类内部访问。 * protected:访问修饰符,...

Global site tag (gtag.js) - Google Analytics