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 關鍵字進行定義。 /** * 自定義註解 *