รับเฉพาะชื่อคลาส Class.getName ()


88

ฉันจะได้รับชื่อของชั้นเรียนได้อย่างไร

String.class.getName()  returns java.lang.String


ฉันสนใจที่จะรับส่วนสุดท้ายเท่านั้นเช่น String
Any Api เท่านั้นที่สามารถทำได้?


4
Java มีเอกสารออนไลน์ที่ยอดเยี่ยม หน้าเว็บที่ andyb เชื่อมโยงด้านล่างนี้เป็นตัวอย่าง ทุกครั้งที่คุณมีคำถามเกี่ยวกับฟังก์ชันการทำงานที่แน่นอนจากคลาสหรือแพ็กเกจ javadocs จะหาได้ง่ายเหมือนกับ Googling "java 6 <package or class in question>"
jpm

คำตอบ:


185

9
String.class.getSimpleName () -> String โดยที่เป็น String.class.getName () -> java.lang.String
Peter Dietz

ขอบคุณ @andyb getSimpleName()เข้าถึงชื่อคลาสได้ง่ายกว่าลบชื่อแพ็กเกจ ไวยากรณ์: object.getClass().getSimpleName() โค้ดตัวอย่าง
Abhijeet

วิธีกำหนดสำหรับตัวแปรสตริงคงที่ มันแสดงข้อผิดพลาดใน android studio
MohanRaj S

ใช้ไม่ได้กับคลาสภายใน: สิ่งนี้จะตัดชื่อคลาสที่ปิดล้อมออกไม่ใช่เฉพาะแพ็กเกจ
toolforger

9

ทั้งสองวิธีด้านล่างใช้งานได้ดี

System.out.println("The Class Name is: " + this.getClass().getName());
System.out.println("The simple Class Name is: " + this.getClass().getSimpleName());

ผลลัพธ์ดังต่อไปนี้:

ชื่อคลาสคือ: package.Student

ชื่อชั้นเรียนง่ายๆคือ: นักเรียน


7

หรือโปรแกรม

String s = String.class.getName();
s = s.substring(s.lastIndexOf('.') + 1);

1
สิ่งนี้ช่วยฉันได้เนื่องจากฉันไม่สามารถใช้ getSimpleName () จากกรอบงานของฉันได้ ... Tq
Imposter

1
นอกจากนี้วิธีการแบบเป็นโปรแกรมยังให้ผลลัพธ์ที่ดีสำหรับคลาสที่ไม่ระบุชื่อ
Hollis Waite

@Imposter คุณใช้อะไรที่เร็วกว่า Java 1.5?
Stealth Rabbi

คุณต้องจัดการกรณีที่ไม่.พบ
เช่น

@eckes หากไม่พบจุดผลลัพธ์จะเป็น -1 การเพิ่ม 1 จะทำให้คุณมีสตริงย่อยเริ่มต้นที่ดัชนี 0 - สิ่งที่คุณต้องการในกรณีนี้ (ฉันเพิ่งทดสอบด้วยint[]ผลลัพธ์คือ"[I")
toolforger

4

คุณสามารถใช้เทคนิคง่ายๆต่อไปนี้เพื่อพิมพ์บันทึกพร้อมชื่อคลาส

private String TAG = MainActivity.class.getSimpleName();

สมมติว่าเราต้องตรวจสอบค่าตัวแปรที่กำลังจะมาในวิธีการจากนั้นเราสามารถใช้ log เช่น bellow:

private void printVariable(){
Log.e(TAG, "printVariable: ");
}

ความสำคัญของบรรทัดนี้คือเราสามารถตรวจสอบชื่อเมธอดพร้อมกับชื่อคลาสได้ ในการเขียนบันทึกประเภทนี้

เขียน: - logeและ Enter

จะพิมพ์บนคอนโซล

E/MainActivity: printVariable:

2

Social.class.getSimpleName ()

getSimpleName (): ส่งคืนชื่อธรรมดาของคลาสที่อยู่ภายใต้ตามที่ระบุในซอร์สโค้ด ส่งคืนสตริงว่างถ้าคลาสพื้นฐานไม่ระบุชื่อ ชื่ออย่างง่ายของอาร์เรย์คือชื่อธรรมดาของประเภทส่วนประกอบที่มี "[]" ต่อท้าย โดยเฉพาะอย่างยิ่งชื่อธรรมดาของอาร์เรย์ที่มีประเภทคอมโพเนนต์ไม่ระบุชื่อคือ "[]"


1

นี่คือวิธี Groovy ในการเข้าถึงคุณสมบัติของวัตถุ:

this.class.simpleName    # returns the simple name of the current class

-2

รับชื่อง่ายๆแทนเส้นทาง

String onlyClassName =  this.getLocalClassName(); 

เรียกวิธีการด้านบนใน onCreate


โซลูชันที่ไม่สมบูรณ์
PLG

หากคุณไม่ระบุแหล่งที่มาสำหรับวิธีการ OP จะไม่สามารถใช้งานได้
เป็นต้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.