`

getCanonicalName getSimpleName getName 区别与应用

阅读更多

接口:

package com.test;

public interface Fruit {

}

 

 

一个实现类:

package com.test;

public class Apple implements Fruit {

}

 

基本测试类:

package com.test;

import java.util.ArrayList;
import java.util.List;

public class TestName {
	public static void main(String[] args) {
		Fruit apple=new Apple();
		System.out.println(apple.getClass().getCanonicalName());//返回com.test.Apple
		System.out.println(apple.getClass().getSimpleName());//Apple
		System.out.println(apple.getClass().getName());//返回com.test.Apple
		
		Apple[] arrApple=new Apple[]{};
		System.out.println(arrApple.getClass().getCanonicalName());//返回com.test.Apple[]
		System.out.println(arrApple.getClass().getSimpleName());//返回Apple[]
		System.out.println(arrApple.getClass().getName());//返回[Lcom.test.Apple;
		
		System.out.println(String.class.getCanonicalName());//返回java.lang.String
		System.out.println(String.class.getSimpleName());//返回String
		System.out.println(String.class.getName());//返回java.lang.String
		
		System.out.println(int.class.getCanonicalName());//返回int
		System.out.println(int.class.getSimpleName());//返回int
		System.out.println(int.class.getName());//返回int
		
		Apple a1=new Apple();
		Apple a2=new Apple();
		List<Apple> appleList=new ArrayList<Apple>();
		appleList.add(a1);
		appleList.add(a2);
		System.out.println(appleList.getClass().getCanonicalName());//返回java.util.ArrayList
		System.out.println(appleList.getClass().getSimpleName());//返回ArrayList
		System.out.println(appleList.getClass().getName());//返回java.util.ArrayList
		
	}
}

 

 

实际应用: hql的泛型查询

 

public <T> List<T> getRecords(Class<T> c,Date startDate,Date endDate){
	    StringBuilder hql = new StringBuilder("select t from ");
	    hql.append(c.getCanonicalName());
	    hql.append(" t where t.statTime>=:startTime and t.statTime<:endTime ");

	    Query query = sessionFactory.getCurrentSession().createQuery(hql.toString());
	    query.setParameter("startTime", startDate);
	    query.setParameter("endTime", endDate);
        
	    return query.list();
	}
}

 

分享到:
评论

相关推荐

    getName()和getSimpleName()的区别1

    getName()和getSimpleName()的区别1

    java Class.getSimpleName() 详解及用法

    在Java编程语言中,`Class` 类是所有类的顶级抽象类,它提供了与类、接口、数组等相关的各种信息。`getSimpleName()` 是 `Class` 类的一个方法,用于获取类的简单名称,即不包括包名的部分。这个方法在很多场景下都...

    Spring Boot应用事件监听示例详解

    Spring Boot应用事件监听详解 Spring Boot应用事件监听是Spring Boot框架中的一种机制,用于监听应用程序的生命周期事件。这些事件可以帮助开发者在应用程序的不同阶段执行特定的操作,例如在应用程序启动时执行...

    Android使用ActivityLifecycleCallback判断程序前后台实例

    在Android开发中,Activity是应用程序的基本构建块,它负责与用户进行交互。了解并管理Activity的生命周期对于优化应用性能和用户体验至关重要。`ActivityLifecycleCallback`是Android系统提供的一种机制,用于全局...

    spring aop使用教程

    System.out.println("Before " + joinPoint.getTarget().getClass().getSimpleName() + "." + joinPoint.getSignature().getName()); } @After("execution(* *(..))") public void doAfter(JoinPoint joinPoint...

    java Reflection 反射机制 反编译

    System.out.println("package " + c.getPackage().getName() + ";\n"); System.out.print(Modifier.toString(c.getModifiers())); System.out.print(" class " + c.getSimpleName()); System.out.print...

    opencv简单应用

    《OpenCV在Android Studio中的简单应用》 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法,适用于Android、iOS、Windows等多种平台。在Android...

    java高级应用简笔

    ### Java高级应用知识点详解 #### 一、自定义注解 **1.1 注解概述** 在Java中,注解是一种元数据,用于提供有关程序元素(如类、方法、字段等)的附加信息。注解本身并不改变程序的行为,但它们可以被工具或框架...

    Java反射技术栈1

    - 获取类的简单名称:`clazz.getSimpleName()` - 获取类的全限定名:`clazz.getName()` - 获取类的包名:`clazz.getPackage().getName()` - 判断类是否为基本类型:`clazz.isPrimitive()` - 判断类是否为数组类型:`...

    spring入门学习-6、AOP几种配置方式详解.pdf

    System.out.println("StudentMethodInterceptor1: " + invocation.getMethod().getName() + " " + invocation.getThis().getClass().getSimpleName()); Object obj = invocation.proceed(); System.out.println(...

    JAVA反射代码

    本文通过几个具体的Java反射示例来深入浅出地介绍Java反射机制的基础知识与应用技巧。反射是Java语言的一个强大特性,它允许程序在运行时检查和修改自身的行为。对于初学者而言,通过实际案例学习可以更好地理解和...

    关于Java的反射机制-你需要理解这些.docx

    - `getName()`和`getSimpleName()`分别用于获取类的全名(包括包名)和简单名称(不包括包名)。 - `getMethod(String name, Class&lt;?&gt;... parameterTypes)`用于获取所有公共方法,包括父类继承的公共方法。 - `...

    Java反射学习和反射的应用场景干货都在这里

    - `getName()`:获取全限定类名(包含包名) - `getSimpleName()`:获取类的简单名称 - `getModifiers()`:获取类的访问修饰符 - `getDeclaredClasses()`:获取内部类信息 - `getDeclaringClass()`:获取外部类信息 ...

    示例代码:java spring【AnnotationMetadata】的简单使用例子

    AnnotationAttributes attributes = annotationMetadata.getAnnotationAttributes(MyAnnotation.class.getName()); for (String attrName : attributes.keySet()) { System.out.println("\t" + attrName + " : " ...

    java过滤器

    ### Java过滤器实现原理与应用 #### 过滤器概述 在Java Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在客户端发送请求到服务器端的过程中进行一系列的预处理工作,比如设置字符编码、身份认证等。...

    Java 自省类教程

    #### 二、自省的概念与应用场景 ##### 2.1 概念 自省(Reflection)是指程序可以在运行时获取自身的结构(如类、接口、字段、方法等)并进行操作的一种机制。它是Java语言的一个重要特性,为开发者提供了在运行时...

    Java 反射常用方法及实例.pdf

    Java 反射机制详解 Java 反射机制是 Java ...反射机制的应用非常广泛,例如在框架、工具、动态代理、AOP 等方面都有广泛的应用。 Java 反射机制是 Java 语言的一个强大功能,可以帮助开发者实现更多的功能和灵活性。

    自定义注解

    与普通的注释不同,注解不仅可以被编译器读取,还可以通过反射机制在运行时进行访问。这使得注解在实际开发中扮演着越来越重要的角色。 #### 二、注解的用途 在现代软件开发中,注解主要应用于以下几个方面: - **...

    自定义Dao,反射实现

    DAO是应用程序中的一个接口或抽象类,它提供了对数据存储的抽象,使得业务逻辑层可以不直接与数据库交互,而是通过DAO进行。这有助于解耦业务逻辑和数据访问逻辑,使得系统更加灵活,易于测试和维护。 自定义Dao时...

    java中的反射机制(内含大量实例)

    - **获取类名**:通过`Class.getName()`,`getSimpleName()`或`getCanonicalName()`获取类的全名、简单名或规范名。 - **获取父类**:使用`getSuperclass()`获取父类的Class对象。 - **获取接口**:使用`...

Global site tag (gtag.js) - Google Analytics