java引用公共类_使用键引用从Java公共类获取值 - java

我们有一个Java公共类,

public class Test {

public class ob1 {

public static final String test = "T1T1";

public static final String test2 = "T7T7";

}

public class ob2 {

public static final String test = "T2T2";

public static final String test2 = "T8T8";

}

public static String getVal(int type, String key) {

return type == 1 ? ob1.key : ob2.key;

}

}

如何从类对象获取值,例如

String t = Test.getVal(1, test); /// This should return T1T1

String t = Test.getVal(2, test2); /// This should return T8T8

参考方案

在Java中,这不可能为对象加上String后缀以访问其字段。

使用反射从字段名称访问字段或重构类,以使其提供带有Map的实现键值。

这是键值映射的完整示例。

由于ob1和ob2是内部类,因此它们对static的使用有一些限制(对于作为方法的字段)。

因此,一种解决方法是在外部类中声明static映射和static检索方法。

它会稍微分散责任,但由于这些修饰符约束,很难以其他方式执行,而只能在内部类中使用实例字段和方法。

import java.util.HashMap;

import java.util.Map;

public class Test {

public class ob1 {

public static final String test = "T1T1";

public static final String test2 = "T7T7";

}

public class ob2 {

public static final String test = "T2T2";

public static final String test2 = "T8T8";

}

static Map valuesObj1;

static Map valuesObj2;

static {

valuesObj1 = new HashMap<>();

valuesObj1.put("test", ob1.test );

valuesObj1.put("test2", ob1.test2);

valuesObj2 = new HashMap<>();

valuesObj2.put("test", ob2.test);

valuesObj2.put("test2",ob2.test2);

}

public static String getVal(int type, String key) {

return type == 1 ? valuesObj1.get(key) : valuesObj2.get(key);

}

public static void main(String[] args) {

System.out.println(Test.getVal(1, "test"));

System.out.println(Test.getVal(2, "test2"));

}

}

它打印:

T1T1

T8T8

Java:找到特定字符并获取子字符串 - java

我有一个字符串4.9.14_05_29_16_21,我只需要获取4.9。数字各不相同,所以我不能简单地获得此char数组的前三个元素。我必须找到最正确的.并将其子字符串化直到那里。我来自Python,因此我将展示Python的实现方法。def foobar(some_string): location = some_string.rfind('.&…在Map中,如果我们使用现有键进行修改,则不会获得ConcurrentModificationException - java

我有以下代码,我希望从情况2的情况下抛出ConcurrentModificationException,但它运行成功。据我所知,如果我对地图中的单个键执行相同的操作,则不会抛出异常,因为here但是当我重现这种具有两个案例的多个密钥的场景时,通过新密钥修改。通过现有密钥进行修改。情况1: Map mp = new H…Java Double与BigDecimal - java

我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…测试hashCode的字符串 - java

我正在编写如下所示的代码:String s1=new String("hi"); System.out.println(s1.hashCode()); String s2=new String("hi"); System.out.println(s2.hashCode()); String s3=s1.intern()…java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值