導航:首頁 > 編程語言 > java獲取類的類型

java獲取類的類型

發布時間:2022-05-02 03:24:23

java 獲取對象的數據類型的方法

使用getClass方法可以獲取一個對象的類型類,然後在調用該類的方法可以獲取該類的相關信息,比如父類的名字,該類的名字等等:

packagetest;

importjava.lang.reflect.Field;
importjava.lang.reflect.Method;


publicclassDemo2{
Stringusername="sss";
publicstaticvoidmain(String[]args),IllegalAccessException,NoSuchFieldException,SecurityException,NoSuchMethodException{

Demo2t=newDemo2();
if(Demo2.class==t.getClass()){
System.out.println("equal");
}

//獲取類名
System.out.println(t.getClass().getName());
//獲取父類名
System.out.println(t.getClass().getSuperclass());
//獲取類中某個屬性
Fieldf=t.getClass().getField("username");
//獲取類中某個方法
Methodm=t.getClass().getDeclaredMethod("main",String[].class);

}
}

⑵ 如何通過Java反射獲取一個類屬性的類型要類型Class<

先獲取Method對象

以下僅供參考

packagecom.kidd.test.;

importjava.lang.reflect.Method;

/**
*Helloworld!
*
*/
publicclassMain{

publicstaticvoidmain(String[]args){
Methodmethod1=null;
Methodmethod2=null;
try{
method1=Class.forName("com.kidd.test..Cat").getMethod("getName",(Class<?>[])null);
method2=Class.forName("com.kidd.test..Cat").getMethod("getChilds",(Class<?>[])null);
}catch(NoSuchMethodExceptionex){
ex.printStackTrace();
}catch(SecurityExceptionex){
ex.printStackTrace();
}catch(ClassNotFoundExceptionex){
ex.printStackTrace();
}

if(null!=method1){
System.out.println(method1.getGenericReturnType().getTypeName());
}

if(null!=method2){
System.out.println(method2.getGenericReturnType().getTypeName());
}
}

}

classCat{

privateStringname;
privateCat[]childs;

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicCat[]getChilds(){
returnchilds;
}

publicvoidsetChilds(Cat[]childs){
this.childs=childs;
}

}

⑶ java 什麼方法可以看類的類型

importJava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.lang.reflect.Method;
importjava.lang.reflect.Modifier;
publicclasstest{
publicstaticvoidmain(String[]args)throwsException{
//BufferedReaderbb=newBufferedReader(newInputStreamReader(System.in));
//Stringclassname=bb.readLine();
Classc=Class.forName("ArrayListTest.java");
//-------------------獲取方法的詳細信息
Methodm[]=c.getDeclaredMethods();
for(inti=0;i<m.length;i++)
{
//--------------------獲得方法的名字
System.out.println("方法的名字是:"+m[i].getName());
//--------------------獲得方法參數的類型和有幾個參數
Classb[]=m[i].getParameterTypes();//獲得所有的參數並且存放到數組B中
for(intj=0;j<b.length;j++)
{
System.out.println("參數的類型是"+b[j]);
}
//--------------------獲得方法返回值的類型
System.out.println(m[i].getReturnType());//獲得方法的返回值類型
//--------------------獲得方法的修飾符
intmod=m[i].getModifiers();
System.out.println("方法的修飾符有"+Modifier.toString(mod));
//--------------------獲得方法的異常類型
Classe[]=m[i].getExceptionTypes();//獲得所有的異常類型存放到數組e中
for(intk=0;k<e.length;k++)
{
System.out.println("方法的異常類型是:"+e[k]);
}
System.out.println("-------------------------------------------------------------------");
}
//----------------------------獲得屬性的詳細信息

}
}
packageClass//測試.com.tc.test.Class的forname方法獲得屬性信息;
importjava.lang.reflect.Field;
importjava.lang.reflect.Modifier;
publicclasstest{
publicstaticvoidmain(String[]args)throwsClassNotFoundException{
Classc=Class.forName("Class測試.com.tc.test.Class的forname方法獲得屬性信息.student");//把要使用的類載入到內存中,並且把有關這個類的所有信息都存放到對象c中
Fieldf[]=c.getDeclaredFields();//把屬性的信息提取出來,並且存放到field類的對象中,因為每個field的對象只能存放一個屬性的信息所以要用數組去接收
for(inti=0;i<f.length;i++)
{
System.out.println("屬性的名稱是:"+f[i].getName());//獲得屬性的名字
System.out.println("屬性的類型是:"+f[i].getType());//獲得屬性的類型
intmod=f[i].getModifiers();//獲得修飾符的常量總和
System.out.println(mod);
System.out.println("屬性的修飾符有:"+Modifier.toString(mod));//modifier類可以根據常量總和去計算到底有哪些修飾符
System.out.println("-------------------------------------------------------");
}
}
}

⑷ Java如何獲得一個類裡面的各個屬性和類型

使用反射可以獲取到;

代碼如下:

importjava.lang.reflect.Field;//這是需要引入的包
Field[]f=類名.class.getDeclaredFields();//獲取該類的欄位(public,protected,default(package)access,andprivate)
for(Fieldff:f)//遍歷欄位
{
System.out.println(ff.getType());//獲取欄位類型
System.out.println(ff.getName());//獲取欄位名
}

⑸ 在java中 如何獲取變數的類型

java中獲取變數的類型可以使用每個類型的getClass()方法來獲得,示例如下:

classTest
{
publicstaticvoidmain(String[]args)
{
inti=1;//int類型變數
System.out.println(getType(i));//列印變數類型為int
}
publicstaticStringgetType(Objecto){//獲取變數類型方法
returno.getClass().toString();//使用int類型的getClass()方法
}
}

⑹ java怎麼根據類名稱得到一個類型

Java 提供了Class類來通過類名獲取對象。
下面請看示例:
先聲明一個Userinfo.java類。

public class Userinfo {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
聲明一個主類。

public class Test {
public static void main(String[] args) throws Exception {
@SuppressWarnings("unchecked")
Class<Userinfo> c = (Class<Userinfo>) Class.forName("Userinfo");
//通過newInstance()獲取對象實例。
Userinfo u = c.newInstance();
try {
System.out.println(Class.forName("Userinfo"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

⑺ JAVA通過類類型動態獲取類型,例如我如何通過string.class獲取string這個類型,是

位元組碼對象是無法直接獲取這個類型的,不過Class類中有幾種方法你可以參考一下:
isInstance(Object obj)
如果obj是這個位元組碼對象的子類或者實現類,或者就是這個類的對象,那麼直接返回true。
isAssignableFrom(類<?> cls)
確定由此類對象表示的類或介面是否與由指定的Class
類表示的類或介面相同或是超類或類介面。

⑻ 在JAVA中怎麼取得一個變數的類型

對於包裝類型變數,是可以直接獲得的,變數名稱.getClass().getName();

示例:

lass Test

{

public static void main(String[] args)

{

int i=1; //int類型變數

System.out.println(getType(i)); //列印變數類型為int

}

public static String getType(Object o){ //獲取變數類型方法

return o.getClass().toString(); //使用int類型的getClass()方法

}

}

(8)java獲取類的類型擴展閱讀

變數的使用注意事項:

Java中的變數必須聲明後才能進行使用;

變數的作用域:在一對{}中為有效區間;

需要進行初始化後才能使用變數;

數據類型 變數名 = 初始化值;

變數的使用是通過變數名來訪問所指向的內存區域中存儲的值。

閱讀全文

與java獲取類的類型相關的資料

熱點內容
fibonacci數列演算法 瀏覽:775
產品經理要和程序員吵架嗎 瀏覽:252
grub2命令行 瀏覽:618
無法獲取加密卡信息 瀏覽:774
雲伺服器網卡充值 瀏覽:509
編程就是軟體 瀏覽:49
伺服器如何添加許可權 瀏覽:437
引用指針編程 瀏覽:851
手機加密日記本蘋果版下載 瀏覽:63
命令行括弧 瀏覽:176
java程序升級 瀏覽:490
排序演算法之插入類 瀏覽:227
gcccreate命令 瀏覽:73
海爾監控用什麼app 瀏覽:64
系統盤被壓縮開不了機 瀏覽:984
linuxredis30 瀏覽:541
狸窩pdf轉換器 瀏覽:696
ajax調用java後台 瀏覽:905
活塞式壓縮機常見故障 瀏覽:614
break演算法 瀏覽:731