1. 程式人生 > >Java通過反射獲取帶引數構造方法並使用

Java通過反射獲取帶引數構造方法並使用

package com.sanmao10;
import java.lang.reflect.Constructor;
public class test2 {
    /**
     * ###27.05_反射(通過反射獲取帶參構造方法並使用)
     * Constructor
     * Class類的newInstance()方法是使用該類無參的建構函式建立物件, 如果一個類沒有無參的建構函式,
     * 就不能這樣建立了,可以呼叫Class類的getConstructor(String.class,int.class)
     * 方法獲取一個指定的建構函式然後再呼叫Constructor類的newInstance("張三",20)方法建立物件*/
public static void main(String[] args) throws Exception{ Class clazz=Class.forName("com.sanmao10.Person"); // Person p=(Person)clazz.newInstance(); //通過無參構造建立物件 // p.say(); Constructor c=clazz.getConstructor(String.class,int.class);//獲取有參構造 Person p=(Person) c.newInstance("sanmao"
,12); //通過有參構造建立物件 p.say(); } } package com.sanmao10; public class Person { private String name; private int age; // public Person() { // } public Person(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this
.name = name; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (age != person.age) return false; return name != null ? name.equals(person.name) : person.name == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; } @Override public String toString() { return super.toString(); } public void say(){ System.out.println(name+"..."+age); } public void papapa(){ System.out.println(name+" pa pa pa"); } }

相關推薦

Java通過反射獲取引數構造方法使用

package com.sanmao10; import java.lang.reflect.Constructor; public class test2 { /** * ###27.05_反射(通過反射獲取帶參構造方法並使用) *

java通過反射獲取私有的構造方法,及反射擦除泛型數據類型約束

code for循環 getmethod 不能 添加 class win flag ring /* * 反射獲取私有的構造方法運行 * 不推薦,破壞了程序的安全性,封裝性 * 暴力私有 */ public class ReflectDemo4 {

java通過反射呼叫不同引數方法

import java.lang.reflect.Method; public class testReflect { /** * @param args */ public sta

C#通過反射獲取類中的方法引數個數,反射呼叫方法引數

using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(string[] args)

java 通過反射獲取方法引數列表名稱

說明             一般情況下是使用不到用反射來獲取引數列表名稱的,只要知道引數列表的型別就可以執行某一個引數了,因為引數名稱是給開發人員用的,執行時引數名稱不起作用。 所以 JDK 本身是沒有獲取引數列表名稱的。          如果要寫框架一類的東西,比

java通過反射獲取方法引數名,Idea/Eclipse/Maven的配置

1,在8以前的jdk版本中,我們利用反射只能獲取到引數型別,然後引數名字都是利用arg0,arg1,arg2......要想獲得引數名,得加上註解,如下:public User getUser(@Param("groupid") String groupid, @Param(

C#通過反射獲取類中的方法和參數個數,反射調用方法參數

new [] 反射 電腦 ram col sta body create using System; using System.Reflection; namespace ConsoleApp2 { class Program { sta

通過反射機制建立一個構造方法引數數量可變的物件

自學的時候剛看到Class類與Java反射,才開始講解了Class類得到對應類構造方法的方法。 我們可以用getConstructors()等四個方法得到需要的Constructor構造方法或者其陣列,然後再利用Constructor的newInstance方法進行建立物件

Java之建立一個預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數

建立一個帶預設構造方法(即無參構造)的類,在構造方法中列印一條訊息"Hello Constructor";再為這個類新增一個過載構造方法,令其接收一個字串引數,並在這個有參構造方法中把"Hello Constructor"和接收的引數一起打印出來。 效果如下: 附上程

Java(通過反射獲取方法使用)

package com.sanmao10; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class test_method { /**

java 通過反射獲取註解

使用反射獲取某個類的註釋、方法上的註釋、屬性上的註釋。 import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; import javax.x

java 通過反射獲取泛型的型別

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java通過反射獲取List中的泛型

Field[] fields = bean.getClass().getDeclaredFields(); for(Field f : fields){ f.setAccessible(true); if(f.getType() == java.util.List

java通過反射獲取類名、屬性名稱以及@Table註解上的表名稱

import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; import java.lang.reflect.Field; import java.

Java(通過反射獲取成員變數使用)

package com.sanmao10; import java.lang.reflect.Constructor; import java.lang.reflect.Field; public class test_Field { /**

java通過反射獲取物件的變數和變數值

在java中如果類的成員變數設定為私有的,一般情況下是不允許直接訪問這個變數的,但是有了反射之後,就可以直接獲取該變數的名稱和變數值 1. 訪問成員變數 (1)先定義一個使用者實體類 p

java通過反射,只需要傳了類名和引數,就可以根據不同引數構造方法例項化物件

轉載自:http://www.jianshu.com/p/69ca44916ebf 程式碼塊 @requires_authorization private Object reflateInstance(String className, Object[] args)th

java再複習——通過反射獲取方法引數和返回值的泛型型別

我們都知道了可以定義帶有泛型引數的方法,以及泛型返回值的方法了,那麼泛型在執行的時候已經被擦除了,我們該如何知道這個泛型到底是什麼呢?有很多情況需要知道實際泛型是什麼,Android資料庫框架以及Http框架在解析成json成實體類的時候,必然要知道是哪個類。 獲取引數的泛

通過反射獲取class文件中的構造方法,運行構造方法

對象 rgs span for instance .... urn his col /* * 通過反射獲取class文件中的構造方法,運行構造方法 * 運行構造方法,創建對象 * 1、獲取class文件對象 * 2、從class文件對象中,獲取需要

Java 自定義註解&通過反射獲取類、方法、屬性上的註解

反射 JAVA中的反射是執行中的程式檢查自己和軟體執行環境的能力,它可以根據它發現的進行改變。通俗的講就是反射可以在執行時根據指定的類名獲得類的資訊。   註解的定義 註解通過 @interface 關鍵字進行定義。 /** * 自定義註解 *