전체 경로가 아닌 클래스 이름 만 얻는 방법은 무엇입니까?
사용 Context
및 메서드 를 사용하여 .NET 과 getClass().getName()
같은 전체 클래스 이름을 나타내는 문자열을 얻을 수 있다는 것을 알고 있습니다 com.package1.package2.MainActivity
.
마지막 부분, 클래스 이름 만 어떻게 얻을 수 있습니까? 이 경우 MainActivity
문자열이됩니다.
간단한 split()
방법으로 할 수 있지만 더 나은 방법이있을 수 있습니다.
이것이 필요한 전부입니다.
MainActivity.this.getClass().getSimpleName();
전체 경로가 아닌 클래스 이름 만 가져 오려면 다음 표현식을 사용합니다.
String className = this.getLocalClassName();
//or
String className = getBaseContext().getLocalClassName();
//or
String className = getApplicationContext().getLocalClassName();
또는 다음을 사용할 수 있습니다.
private static final String TAG = MainActivity.class.getSimpleName();
어떤 방법을 사용하든 getClass 위에 추가 작업을 수행해야합니다. 나는 이것을 나누는 것이 좋습니다.
String className = xxx.getClass();
int pos = className.lastIndexOf ('.') + 1;
String onlyClass = className.substring(pos);
메서드 내에서 클래스 이름이 필요한 경우
getLocalClassName()
메서드 외부에 클래스 이름이 필요한 경우
getClass().getSimpleName()
동일한 클래스 내의 여러 메서드에서 클래스 이름을 재사용하려면 클래스 내에서 사용한
private final String TAG = getClass().getSimpleName();
다음 모든 메서드에서 TAG 변수를 사용하십시오.정적 메소드에서 클래스 이름에 액세스하려면
private static final String TAG = MainActivity.class.getSimpleName();
이제 정적 메소드 내에서 정적 변수 TAG를 사용하십시오.
나에게 맞는 다른 솔루션은 없습니다. 이유는 모르겠습니다. 나는 사용하고있다
this.getClass().getName().replace("$",".").split("\\.")[3]
단점 : 하나의 문자열에서 스레드와 리스너에서 사용할 수 있습니다.
(리스터에서는 com.djdance.android.main $ 53 과 같은 것을 얻습니다 )
수업 밖에서 이름을 얻으려면 다음을 호출 할 수 있습니다.
MainActivity.class.getSimpleName()
이런 식으로 클래스를 정적으로 만드는 것을 피할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/10606190/how-to-get-class-name-only-not-full-path
'Programing' 카테고리의 다른 글
Windows Server 2008 R2에서 일반 사용자로 사용자 환경 변수를 설정하는 방법은 무엇입니까? (0) | 2020.11.10 |
---|---|
BluetoothAdapter의 상태 변경을 감지합니까? (0) | 2020.11.10 |
XOR의 역함수는 무엇입니까? (0) | 2020.11.10 |
pyplot.barh ()를 사용하여 각 막대의 막대 값을 표시하는 방법은 무엇입니까? (0) | 2020.11.10 |
T-SQL의 PRINT 문 (0) | 2020.11.10 |