精华内容
下载资源
问答
  • java中getClass()方法简介

    万次阅读 多人点赞 2018-01-23 14:56:38
    getClass() 返回此 Object 的运行时类。 一、示例代码: public class Test { public static void main(String[] args) { Person p = new Person(1,"刘德华"); System.out.println(p.getClass()); S

    getClass() 返回此 Object 的运行时类。


    一、示例代码:

    public class Test {
        public static void main(String[] args) {
            Person p = new Person(1,"刘德华");
            System.out.println(p.getClass());  
            System.out.println(p.getClass().getName()); 
        }
    }
    
    class Person{
        int id;
        String name;
        public Person(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
    }

    运行结果:
    这里写图片描述

    详解:

    System.out.println(p.getClass());

    1. getClass()返回Class类型的对象。
    返回的是内存中实实在在存在的Person 这个类
    这里写图片描述

    2. 返回类型为Class理解:
    一个男人有爸爸的称呼,丈夫(老公),还有儿子的称呼,还有爷爷,叔叔等等的称呼,而这些称呼的参照物不同导致有不同的称呼。当参照物是老婆时,这个男人的称呼是丈夫(老公),当参照物是男人的儿子时,此男人的称呼是爸爸。以此类推等等。

    同理对于Person类,或者准确的说每个类(除所有类的父类Object)也有两个称呼,既可以称为是类,也可称为变量。参照物不同称呼不同。

    上面的代码为例:
    参照物: Person的属性id,name 则:Person的称呼是类(Class)
    参照物: Class类 则:Person的称呼是变量/属性

    例如:
    String name
    Class Person

    name的类型是String,此时 Class Person 的性质和String name一样。
    String 等同于 Class,是类。
    name 等同于 Person,是对象 / 变量的称呼。

    String类下有很多方法供name对象使用,同理Class类下也有很多方法供Person对象使用。

    Class类和String类一样,都是继承于Object类,Object是所有类的根类 。

    3. getClass()方法的作用
    获得了Person这个(类)Class,进而通过返回的Class对象获取Person的相关信息,比如:获取Person的构造方法,方法,属性有哪些等等信息。

    3.1 获取Person的相关信息
    当我们想要获取Person的属性id或者想要调用Person的方法时,我们需要new Person()来创建一个Person的对象,通过对象来获取。

    Person p = new Person(1,”刘德华”);
    p.id // 对象调用属性来获取p的id属性

    同理,当我们想要获取Person的信息,比如:获取Person的名字,获取Person的构造函数,获取Person的继承关系等等这些Person的相关信息就不能仅仅只是通过new Person()的方式了
    而是需要获取内存中实实在在存在的这个Class Person,通过获取到的。

    Person p = new Person(1,”刘德华”);
    Class cla = p.getClass(); // 通过对象p调用getClass()方法返回Class

    然后通过cla对象来获取Person的相关信息,因为Class提供了大量的方法来获取类(?extends Object)的信息。

    String perName = cla.getName(); // 返回Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称

    记住: java是面向对象的。创建对象,通过对象来调用方法。

    总结:

    获取Person的相关信息步骤(这只是其中一种方法来获取,还有其他方法以后相继补上):**

    1. 创建对象: Person p = new Person(1,”刘德华”);
    2. 返回Class类型的对象: Class c = p.getClass();
      此时c是Class类型,Class提供了一系列的方法来获取类的相关信息,可以通过对象c来获取Person的信息。比如,获取Person这个类的类名:
      String perName = c.getName();
    展开全文
  • 主要介绍了javascript实现类似java中getClass()得到对象类名的方法,实例分析了javascript实现java中getClass方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • java中getClass()方法的用法

    千次阅读 2019-04-24 16:11:46
    getClass的定义以及使用方法getClass()的作用getClass()使用方式简单代码演示其他相关用法1.getName()和getCanonicalName()2.getDeclaredMethod()3.还有很多对class对象进行操作的方法 getClass()的作用 getClass...

    getClass()的作用

    getClass() 返回此 Object 的运行时该对象的类. 该方法返回一个Class对象, 可以通过该对象可以获取某个类的相关信息, 如构造方法 属性 方法 等.

    getClass()使用方式

    1.首先new一个新对象 如 a
    2.再通过 a.getClass() 来获取该对象

    简单代码演示

    • Car.java
    package main;
    
    public class Car {
        private String name;
        private int seat;
    
        private void showCar(){
            System.out.println(name + '有' + seat + "个座位");
        }
    }
    
    • UseGetClass.java
    package main;
    
    public interface UseGetClass {
        public static void main(String[] args) {
            Car car = new Car();
            Class carClass = car.getClass(); // 使用getClass获取该对象的类
    
            System.out.println(carClass);
        }
    }
    
    • 运行结果
    class main.Car
    

    其他相关用法

    1.getName()和getCanonicalName()

    getName()获取类名, getCanonicalName(): 返回权威的类名, 当为匿名类时, 返回输出的是null

    代码示例:

    • Car.java
    package main;
    
    public class Car {
        private String name;
        private int seat;
    
        private void showCar(){
            System.out.println(name + '有' + seat + "个座位");
        }
    
        // 内部类
        class TestCar {
            private String testName;
    
            public void runTestCar(){
                System.out.println("测试车辆" + testName);
            }
        }
    
    }
    
    • Tyre.java 抽象类 用于等会儿创建匿名内部类
    package main;
    
    public abstract class Tyre {
        public String size;
    
        public void setSize(String size){
            this.size = size;
        }
    
        public String getSize(){
            return size;
        }
    }
    
    • UseGetClass.java
    package main;
    
    public interface UseGetClass {
        public static void main(String[] args) {
            Car car = new Car();
            Class carClass = car.getClass();  // 使用getClass获取该对象的类
    
            System.out.println("获取对象的类Class" + carClass);
    
            // 创建内部类对象
            Car.TestCar testCar = car.new TestCar();
            System.out.println("内部类getName():" + testCar.getClass().getName());  // 获取类名
            System.out.println("内部类getCanonicalName():" + testCar.getClass().getCanonicalName());  // 获取权威类名
    
            // 创建匿名内部类
            Tyre tyre = new Tyre() {
                @Override
                public void setSize(String size) {
                    super.setSize(size);
                }
    
                @Override
                public String getSize() {
                    return super.getSize();
                }
            };
            System.out.println("匿名内部类getName():" + tyre.getClass().getName());  // 获取类名
            System.out.println("匿名内部类getCanonicalName():" + tyre.getClass().getCanonicalName());  // 获取权威类名
    
        }
    }
    

    运行结果 :
    获取对象的类Classclass main.Car
    内部类getName():main.Car$TestCar
    内部类getCanonicalName():main.Car.TestCar
    匿名内部类getName():main.UseGetClass$1
    匿名内部类getCanonicalName():null

    2.getDeclaredMethod()

    返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法
    定义:

    public Method getDeclaredMethod(String name, Class... parameterTypes) throws NoSuchMethodException,SecurityException
    

    该方法有两个参数
    name: 是一个字符串,指定所需的方法的名称
    parameterTypes: 可选参数,是一个数组的Class对象识别方法的形参类型,在声明的顺序

    返回值
    匹配指定名称和参数的类的方法,此方法返回的Method对象

    异常
    NoSuchMethodException – 如果匹配方法未找到

    NullPointerException – 如果name 为 null.

    注意
    getDeclaredMethod() 获取的是类自身声明的所有方法,包含public、protected和private方法。

    getMethod () 获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。

    代码示例

    import java.lang.reflect.Method;
    
    public class UseGetClass {
      public static void main(String[] args) {
          Car car = new Car();
          Class carClass = car.getClass();  // 使用getClass获取该对象的类
          try {
              Method carMethod = carClass.getDeclaredMethod("showCar");  // 获取该类中的showCar方法
              System.out.println("method:" + carMethod);
          } catch (NoSuchMethodException e) {
              e.printStackTrace();
          }
      }
    }
    

    3.还有很多对class对象进行操作的方法

    常用的有如下:

    • getFields:获取public修饰的所有属性,返回一个Field数组(包括父类的)
    • getDeclaredFields:获取所有属性,返回一个Field数组
    • getField:传入一个参数(属性名),获取单个属性,返回一个Field对象,只能获取public修饰的
    • getDeclaredField:传入一个参数(属性名),获取单个属性,返回一个Field对象
    • getMethods:获取所有的public修饰的方法,包括父类的,返回Method
    • getDeclaredMethods:获取所有的返回,不包括父类,返回Method数组
    • getMethod:传入一个参数(方法名),返回一个Method对象,只能获取到public修饰的
    • getDeclared:传入一个参数(方法名),返回一个Method对象
    • newInstance:创建该类型的一个实例
    展开全文
  • Java中getClass()方法

    千次阅读 2018-07-20 13:44:46
    Object类包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类。 类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型。所有的类型类都是Class类的...

    我们知道在Java中一切都是对象,我们一般所使用的对象都直接或间接继承自Object类。Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类。

    类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型。所有的类型类都是Class类的实例。看下面面一段程序:

    public class GetClassTest
    {
    	public static void main(String[] args)
    	{
    		A a = new A();
    		B b = new B();
    		A c = new B();
    		A d = new A();
    		
    		System.out.println(a.getClass() + "---" + a.getClass().hashCode());
    		System.out.println(b.getClass() + "---" + b.getClass().hashCode());
    		System.out.println(c.getClass() + "---" + c.getClass().hashCode());
    		System.out.println(d.getClass() + "---" + d.getClass().hashCode());
    		
    		System.out.println("******");
    		
    		if(a.getClass() == b.getClass())
    			System.out.println(a.getClass() + "=" + b.getClass());
    		else
    			System.out.println(a.getClass() + "!=" + b.getClass());
    		if(a.getClass() == c.getClass())
    			System.out.println(a.getClass() + "=" + b.getClass());
    		else
    			System.out.println(a.getClass() + "!=" + c.getClass());
    		if(b.getClass() == c.getClass())
    			System.out.println(b.getClass() + "=" + c.getClass());
    		else
    			System.out.println(b.getClass() + "!=" + c.getClass());
    		
    		System.out.println("******");
    		
    		a.printTest();
    		a.printTest2();
    		a.printTest3();
    	}
    }
    
    class A
    {
    	public void printTest()
    	{
    		System.out.println(super.getClass());
    	}
    	
    	public void printTest2()
    	{
    		System.out.println(this.getClass());
    	}
    	
    	public void printTest3()
    	{
    		System.out.println(getClass().getSuperclass());
    	}
    }
    
    class B extends A
    {}

    编译并运行,见图1所示。

                                                                                                      图1

    分析图1,

           class A---366712642
           class B---1829164700
           class B---1829164700
           class A---366712642
    可知,每个类只对应一个Class对象。

           class A!=class B
           class A!=class B
           class B=class B
           ******
           class A
           class A
           class java.lang.Object
    可知,getClass()返回的是对象运行时的类型,与this,super等关键字的引用无关,所以getClass(),this.getClass()和super.getClass()返回的都是"Class A"。如果想要得到父类的名称,应该用如下代码:

    getClass().getSuperclass();

     

    展开全文
  • 主要介绍了Java 使用getClass().getResourceAsStream()方法获取资源的相关资料,这里主要讲解哪种方式可以获取到文件资源,需要的朋友可以参考下
  • java中getClass()方法的详解

    万次阅读 多人点赞 2018-06-18 18:45:26
    getClass()返回运行时的类;1.示例代码:package com.dbzhang.demo4; public class Person { int id; private String name; public Person(int id, String name) { super(); this.id = id; this.name = ...

    getClass()返回运行时的类;

    1.示例代码:

    package com.dbzhang.demo4;
    
    public class Person {
    	 int id;
    	private String name;
    	public Person(int id, String name) {
    		super();
    		this.id = id;
    		this.name = name;
    	}
    	
    }
    
    package com.dbzhang.demo4;
    
    public class Test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Person p = new Person(1,"zdb");
    		System.out.println(p.getClass());
    		System.out.println(p.getClass().getName());
    		System.out.println(p.getClass().getSimpleName());
    		System.out.println(p.id);
    	}
    
    }
    

    运行结果:

    class com.dbzhang.demo4.Person
    com.dbzhang.demo4.Person
    Person
    1
    

    汇总:(1)getClass()方法是获得调用该方法的对象的类;getClass().getName()可以得到该类的路径;

    (2)通过getClass()方法得到该对象类Class后,可以通过Class获取这个类中的相关属性和方法;



    展开全文
  • 本篇文章介绍了,在java中instanceof和getClass()的区别分析。需要的朋友参考下
  • 主要介绍了java 反射getClass .class 的使用方法,结合实例形式分析了java类反射机制的相关操作技巧,需要的朋友可以参考下
  • Java getClass()方法

    千次阅读 2017-09-02 17:11:10
    import java.util.Date; public class SuperClassTestDemo extends Date{ private static final long serialVersionUID = 890185079756933430L; public static void main(String[] args) { new
  • Object类有一个getClass方法,m a r k- t o- w i n:它会返回一个你的对象所对应的一个Class的对象,这个返回来的对象保存着你的原对象的类信息,比如你的原对象的类名叫什么,类里有什么方法,字段等。...
  • 可以看到,对象a是A的一个实例,A某一个类,在if语句使用a.getClass()返回的结果正是A的类型类,在Java中表示一个特定类型的类型类可以用“类型.class”的方式获得,因为a.getClass()获得是A的类型类,也就是A....
  • JAVA中getClass()以及getName()方法

    万次阅读 多人点赞 2018-10-24 00:04:36
    返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 Java的引用变量有两个类型,编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定...
  • 主要介绍了JAVA反射机制中getClass和class对比分析,具有一定参考价值,需要的朋友可以了解下。
  • I have a class that must have some static methods. 我有一个必须具有一些静态方法的类。 Inside these static methods I
  • 主要介绍了详解java中this.getClass()和super.getClass()的实例的相关资料,需要的朋友可以参考下
  • ...getClass方法: 类型:public final Class getClass() 功能:返回该对象的运行时类的Java.lang.Class对象(API上的解释) 有方法类型可以知道,该方法只能由类的实例变量调用 例子: [java
  • 详解Java中的Object.getClass()方法

    千次阅读 2019-05-09 13:41:45
    详解Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Method对象;我们也可以获取该对象的所有成员变量,每个...
  •  一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享。 原来为就是涉及到Java的反射~~~~~ Java反射学习 所谓反射,可以理解为在...
  • java中getClass( )和class()的联系和区别

    万次阅读 多人点赞 2015-08-24 08:51:20
    java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然。这两个方法涉及到了java中的反射。 反射 所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在...
  • java中getClass和instance区别

    千次阅读 2018-04-18 16:26:17
    java中getClass和instance区别 public class Person { } public class Son extends Person { } @Test public void classAndInstanceOfTest(){ Person person = new Person(); Son son = new Son(); Sy...
  • javagetClass()方法说明

    千次阅读 2017-11-18 11:17:49
    传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射...
  • java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然。这两个方法涉及到了java中的反射。 类名.class的方式更加安全,例如当你要获取一个接口的class时,可以使用 类名.class 的方式...
  • package com.cavaness.quartzbook.chapter3;import java.util.Date;public class Test extends Date { public static void main(String[] args) { new Test().test(); } public void test() {
  • java getClass, getName

    千次阅读 2017-07-02 06:11:18
    java getClass 返回类的类型, 而 getName 可以返回类的名字, 举例: class Person{ String name; Person(String name){ this.name=name; } Person(){ this.name=""; } } public class ...
  • 主要介绍了Java instanceof和getClass()区别实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 关于java中getClass()和super.getClass()

    千次阅读 2014-07-26 02:07:26
    Java代码  import java.util.Date;  public class Test extends Date{   public static void main(String[] args) {   new Test().test();   }     public void test()
  • Object类九大方法getClass方法

    千次阅读 2019-08-12 11:50:35
    Object类九大方法getClass方法 https://www.cnblogs.com/wsw-bk/p/8026266.html 获取此Object的运行时类. 什么是运行时类? 在创建对象前先要有class文件,这是字节码文件,首先要加载class(字节码)文件,后面才能接着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,310
精华内容 141,324
关键字:

java中getclass方法的作用

java 订阅