首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取正在扩展的类的名称

在 Java 中,可以通过 Runtime 类提供的 loadClass 方法获取正在扩展的类的名称。具体实现方式如下:

代码语言:java
复制
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ClassName {
    public static void main(String[] args) throws ClassNotFoundException {
        // 获取正在扩展的类的名称
        String className = getClassName();
        System.out.println("正在扩展的类名称:" + className);
    }

    private static String getClassName() throws ClassNotFoundException {
        // 获取调用者的类名
        String callerClassName = ClassName.class.getName();
        callerClassName = callerClassName.substring(callerClassName.lastIndexOf('.') + 1);

        // 通过调用类的构造方法获取类名
        Class<?> callerClass = Class.forName(callerClassName);
        Method[] methods = callerClass.getDeclaredMethods();
        for (Method method : methods) {
            if (method.getName().equals("getClassName")) {
                Object[] args = method.getParameters();
                if (args.length == 0) {
                    return (String) method.invoke(null);
                } else {
                    throw new IllegalArgumentException("Invalid method signature");
                }
            }
        }
        throw new ClassNotFoundException("Class not found: " + callerClassName);
    }
}

在上述代码中,我们首先通过 Class.forName 方法获取调用者的类名,然后通过循环遍历该类的所有方法,查找名为 getClassName 的方法。该方法应该是一个私有方法,没有参数,返回类型为 String。如果找到了该方法,就可以通过反射调用该方法并获取其返回值,即正在扩展的类的名称。如果没有找到该方法,就会抛出一个 ClassNotFoundException

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如何获取Hive正在执行或已结束SQL语句

    本文主要介绍两种方式来获取Hive正在执行或者已结束MapReduce作业SQL语句,一种是通过MapReduce API获取执行作业xml配置文件,另一种是通过Cloudera Manager...---- 1.通过YARN执行作业xml配置文件 1.通过Hue执行SQL查询,Job Browser页面可以获取该SQL执行ApplicationID,如下: image.png 2.通过ApplicationID...获取正在执行作业配置信息,执行如下: curl -H "Accept: application/json" -X \ GET http://master:8088/proxy/application_...,可获取运行中Hive作业SQL语句,该信息对应HDFS /user/$USER/.staging/$JOBID/job.xml文件 3.如果作业执行完成将接口改为JobHistoryAPI...接口,可获取Hive历史作业执行SQL语句,该信息对应HDFS/user/history/done/2018/08/28/000000/job_1534299721148_0845_conf.xml文件

    9.9K00

    java准确获取操作系统名称

    程序员都很懒,你懂! 在我们日常开发中,经常需要判断操作系统版本或者系统名字等等。这就需要我们用到jdk默认带一些属性了。...这里我对各个版本系统都做了区分,分别能判断mac,linux,window等大众操作系统名称。...直接看代码(OSUtil.java): package com.herman.util; /** * @see 获取操作系统名称 * @author Herman.Xiong * @date 2014...OSUtil.isWindowsVista()); System.out.println("当前系统为WindowsXP系统:"+OSUtil.isWindowsXP()); /* * 注意:如果使用1.6...jdk,那么对于win7和win8系统都显示“Windows Vista” * 如果要正确判断win7还是win8系统,则需要使用jdk1.7 * android系统需要稍微改动

    4.2K30

    根据 PID 获取容器所在 Pod 名称

    在管理 Kubernetes 集群过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个容器里进程。有没有办法可以根据 PID 快速找到 Pod 名称呢?...d6f24b62 最后一步根据容器 ID 获取 Pod 名称,如果你容器运行时是 containerd 或 crio,可以使用 crictl 来获取容器信息: # Go Template $ crictl...如果你容器运行时是 Docker,可以使用命令行工具 docker 来获取,方法和上面类似。 2....整合 方法是有了,怎么才能将所有的步骤合并成一个步骤,一步到位获取 Pod 名称呢?...Kubernetes 中很多组件都是通过 HTTPS 协议来暴露指标,比如 kubelet,那么如何使用 API 来访问这些指标呢?

    6.8K21

    如何获取当前正在执行脚本绝对路径

    现在我们回头来把这个脚本拆开来理解一下 `` 表示执行引号内命令 $0 表示当前执行脚本文件名 dirname $0 表示获取当前执行脚本路径 这样一来就能明白dirname $0是如何获取当前执行脚本路径了吧...$( ) 和 `` 在这里需要补充$( ) 和 ``不同。 二者都是返回括号中命令结果,是用来作命令替换,即先完成引号里命令行,然后将其结果替换出来,再重组成新命令行。...但需要注意两点: 在多层次复合替换中,``必须要额外跳脱处理(反斜线) 不是所有的unix系统都支持$( ),但反引号是肯定支持 举个栗子~ #!.../bin/bash basepath=$(cd `dirname $0`; pwd) echo $basepath 此时输出结果是脚本所在路径,但如果我换一种命令替换方式 #!.../bin/bash basepath=`cd `dirname $0`; pwd` echo $basepath 出现了报错,这就需要按我上面提到在多层次复合替换中,``必须要额外跳脱处理(反斜线

    1.8K20

    如何获取Hive正在执行或者已结束MapReduce作业SQL语句

    语句,如下: [xxa06ijg1r.jpeg] 本文主要介绍三种方式来获取Hive正在执行或者已结束MapReduce作业SQL语句,一种是通过MapReduce API获取执行作业xml配置文件...,另一种是通过Cloudera Manager界面直接查看,第三种是通过Cloudera ManagerAPI来获取。...SQL查询 [1qilvqo5cv.jpeg] 2.通过SQLApplicationID获取到作业配置信息 curl -H "Accept: application/json" -X \ GET...接口获取Hive历史作业执行完整SQL语句,该信息对应到HDFS/user/history/done/2018/02/26/000000/job_1519613953021_0029_conf.xml...通过Cloudera ManagerAPI接口获取 ---- 1.在命令行执行如下命令获取作业详细信息 [root@ip-172-31-16-68 ~]# curl -u admin:admin "http

    6.3K50

    Windows下获取网络连线实际名称,加强IP设置脚本兼容性

    其中比较难解决问题就是获取网络连线实际名称,大部分人使用 IP 设置脚本都是将【本地连接】写死在代码中,可实际上并不是所有电脑都叫本地连接;比如有的用户电脑可能升级了网卡驱动,或者更换了网卡,导致网络连线名称变成...(英文版暂未考虑) (PS:以下代码只为说明获取名称,其他一切从简展示): 一、先给出一个 XP 下简繁体通用获取连线名称代码 @echo off   for /f "tokens=1,2,3...---- 二、来个 XP/WIN7/简繁体通吃连线名称获取代码(最近才帮维护人员写,热乎着呢!)...---- 三、最后,再给个 XP 环境下加入了多网卡判断获取连线名称脚本吧! Ps:或许有筒子可以参考做出全兼容脚本呢!...代码缺点: 1.还是未能解决多块网卡自动设置 IP 情况,请有兴趣筒子参考改进哦! 2.无法兼容 WIN7 好了,以上就是获取实际网络连线名称所有代码了,希望能帮到有需要朋友!

    1.6K40

    Android经典实战之如何获取图片经纬度以及如何根据经纬度获取对应地点名称

    在Android中,可以通过以下步骤获取图片经纬度信息以及根据这些经纬度信息获取对应地点名称。这里主要涉及两部分:从图片中提取地理位置信息(经纬度)和通过地理位置信息获取地点名称。 1....从图片中提取地理位置信息(经纬度) ExifInterface是Android提供一个,用于处理JPEG文件中Exif信息。...以下是如何使用ExifInterface提取图片中经纬度信息示例代码: import androidx.exifinterface.media.ExifInterface; import java.io.IOException...根据经纬度获取地点名称 可以使用Google Maps Geocoding API或者AndroidGeocoder来进行反向地理编码,将经纬度转换为人类可读地址。...使用Geocoder Geocoder提供了简单接口,用于根据经纬度获取地址信息。

    16410

    EasyDSS如何正在直播通道定时快照获取方式进行简化?

    TSINGSEE青犀视频开发网页无插件视频直播点播平台EasyDSS为了便于大家二次开发,提供了很多接口供大家调用,其中web界面快照获取就是采用了快照接口调用。...EasyDSS快照是从数据库中取出需要进行定时快照数据,然后查询对应直播间是否正在直播,如果正在直播,则进行截图功能,以下为源代码: func InspectionSnap() { //获得待截图流...} } } } } } 在审查代码时,发现每次都是从数据库中取出所有数据,然后再进行判断是否启用,这样取出数据量非常大...} for _, liveID := range strings.Split(snap.LiveID, consts.SplitComma) { //如果正在直播...snap.ResolutionW, snap.ResolutionH, nil) } } } } } } 其中以下语句为取出已经在启用状态截图

    60920

    Android开发:获取手机当前连接WiFi名称

    前言 在Android开发过程中,有时候需要使用获取手机当前连接WiFi功能,这样就省去了手动输入WiFi名称步骤,这种需求一般都是涉及到手机App和硬件设备进行WiFi通讯时候会用到,那么本篇博文就来分享一下...Android手机App自动获取当前手机连接WiFi名称方法。...二、在activity中添加代码 1、获取WiFi名称 private String getConnectWifiSsid(){ WifiManager wifiManager = (WifiManager...WiFi名称是加有双引号,具体如下所示: 2.png 3.png 根据系统WiFi名称包含一个双引号,需要进行处理,具体处理步骤如下所示: 方法一: String wifiInfo1...三、具体使用场景 本案例需求是,获取到手机当前连接WiFi名称,然后直接给WiFi名称EditText控件赋值。

    4.3K61
    领券