java getCanonicalName getSimpleName和getName的区别和用法

接口:

Java代码  

  1. package com.test;
  2. public interface Fruit {
  3. }

一个实现类:

Java代码  

  1. package com.test;
  2. public class Apple implements Fruit {
  3. }

基本测试类:

Java代码  

  1. package com.test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class TestName {
  5. public static void main(String[] args) {
  6. Fruit apple=new Apple();
  7. System.out.println(apple.getClass().getCanonicalName());//返回com.test.Apple
  8. System.out.println(apple.getClass().getSimpleName());//Apple
  9. System.out.println(apple.getClass().getName());//返回com.test.Apple
  10. Apple[] arrApple=new Apple[]{};
  11. System.out.println(arrApple.getClass().getCanonicalName());//返回com.test.Apple[]
  12. System.out.println(arrApple.getClass().getSimpleName());//返回Apple[]
  13. System.out.println(arrApple.getClass().getName());//返回[Lcom.test.Apple;
  14. System.out.println(String.class.getCanonicalName());//返回java.lang.String
  15. System.out.println(String.class.getSimpleName());//返回String
  16. System.out.println(String.class.getName());//返回java.lang.String
  17. System.out.println(int.class.getCanonicalName());//返回int
  18. System.out.println(int.class.getSimpleName());//返回int
  19. System.out.println(int.class.getName());//返回int
  20. Apple a1=new Apple();
  21. Apple a2=new Apple();
  22. List<Apple> appleList=new ArrayList<Apple>();
  23. appleList.add(a1);
  24. appleList.add(a2);
  25. System.out.println(appleList.getClass().getCanonicalName());//返回java.util.ArrayList
  26. System.out.println(appleList.getClass().getSimpleName());//返回ArrayList
  27. System.out.println(appleList.getClass().getName());//返回java.util.ArrayList
  28. }
  29. }

实际应用: hql的泛型查询

Java代码  

  1. public <T> List<T> getRecords(Class<T> c,Date startDate,Date endDate){
  2. StringBuilder hql = new StringBuilder("select t from ");
  3. hql.append(c.getCanonicalName());
  4. hql.append(" t where t.statTime>=:startTime and t.statTime<:endTime ");
  5. Query query = sessionFactory.getCurrentSession().createQuery(hql.toString());
  6. query.setParameter("startTime", startDate);
  7. query.setParameter("endTime", endDate);
  8. return query.list();
  9. }
  10. }
时间: 2024-10-06 04:07:16

java getCanonicalName getSimpleName和getName的区别和用法的相关文章

Java中this与super的区别以及用法

super()用法 super()函数在子类构造函数中调用父类的构造函数时使用,必须要在构造函数的第一行. 1 class Animal { 2 public Animal() { 3 System.out.println("我是一只动物"); 4 } 5 } 6 class Cat extends Animal { 7 public Cat() { 8 super();//必须放在这里 9 System.out.println("我是一只小猫"); 10 //su

java中throws和throw的区别和用法

1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.如下面例子所示: public class Shoot {   //创建类 static void pop() throws NegativeArraySizeException { //定义方法并抛出NegativeArraySizeException异常 int [] arr = new int[-3];//创建数组 } publ

java线程学习-Thread.currentTread().getName()和this.getName()的区别

很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发. 线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable接口的. 先来个小甜点作为开始,如下为创建多个线程,并且同时处理. package firstThreadStudy; public class MyThread extends Thread { public MyThread(){ System.out.println("MyThread cur

java中抽象类与接口的区别

转自: http://blog.csdn.net/tp7309/article/details/10452445 二者的区别快忘得差不多了,从别处看到这文章感觉写的不错,正好复习复习,也给大家分享一下. 抽象类 abstract class 包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员变量和方法.所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法.当然抽象方法是一定要有的. 抽象类是用于单一继承的,不能实例化.而继承类一定要实现抽象方法,因为抽象

java创建多线程方法之间的区别

我们知道java中创建多线程有两种方法(详见http://blog.csdn.net/cjc211322/article/details/24999163).那么两者有什么区别呢? 一.情形一 code1 /** * ThreadTestDemo.java * @author cjc * */ public class ThreadTestDemo { public static void main(String[] args) { Ticket t=new Ticket(); t.start(

Java成员变量与属性的区别,简单最易懂的解释!!!

例一: 一个Student pojo类: public class Student{ private String name; private int age; public String getName(){ return this.name; } public void setName(String name){ this.name = name; } public int getAge(){ return this.age; } public void setAge(int age){ t

Java中Comparable和Comparator接口区别分析

Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧.Comparable 简介Comparable 是排序接口.若一个类实现了Comparab 本文要来详细分析一下Java中Comparable和Comparator接口的区别,

java线程-Thread和Runnable的区别

进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程. 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小. 线程和进程一样分为五个阶段:创建.就绪.运行.阻塞.终止. 多进程是指操作系统能同时运行多个任务(程序). 多线程是指在同一程序中有多个顺序流在执行 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. Thread类是在java.lang包

java中List 和 Set 的区别

a. 特性 两个接口都是继承自Collection?,是常用来存放数据项的集合,主要区别如下:      ① List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元素,而在Set中不允许重复元素存在. ? ② 与元素先后存放顺序有关,List是有序集合,会保留元素插入时的顺序,Set是无序集合. ? ③ List可以通过下标来访问,而Set不能. b. 常见实现类 ? (1) List接口 常见实现类如下: ? ArrayList(数组实现):允许对元素进行快