import org.spongepowered.api.data.DataHolder; //导入方法依赖的package包/类

public static AbstractTagObject getValue(DataHolder dataHolder, Key key, Action error) {

Class clazz = key.getElementToken().getRawType();

if (!dataHolder.supports(key)) {

if (FlagMap.class.isAssignableFrom(clazz)) {

return new MapTag();

}

error.run("This data holder does not support the key '" + key.getId() + "'!");

return new NullTag();

}

if (Boolean.class.isAssignableFrom(clazz)) {

return new BooleanTag(dataHolder.getOrElse((Key>) key, false));

}

else if (CatalogType.class.isAssignableFrom(clazz)) {

return new TextTag(dataHolder.getValue((Key>) key).orElseThrow(() -> new ErrorInducedException("Value not present!")).get().getId());

}

else if (Double.class.isAssignableFrom(clazz)) {

return new NumberTag(dataHolder.getOrElse((Key>) key, 0.0));

}

else if (Enum.class.isAssignableFrom(clazz)) {

return new TextTag(dataHolder.getValue((Key>) key).orElseThrow(() -> new ErrorInducedException("Empty enum value!")).get().name());

}

else if (Integer.class.isAssignableFrom(clazz)) {

return new IntegerTag(dataHolder.getOrElse((Key>) key, 0));

}

else if (Vector3d.class.isAssignableFrom(clazz)) {

return new LocationTag(dataHolder.getOrElse((Key>) key, new Vector3d(0, 0, 0)));

}

else if (Text.class.isAssignableFrom(clazz)) {

return new FormattedTextTag(dataHolder.getOrElse((Key>) key, Text.EMPTY));

}

else if (FlagMap.class.isAssignableFrom(clazz)) {

return new MapTag(dataHolder.getOrElse((Key>) key, new FlagMap(new MapTag())).flags.getInternal());

}

else {

error.run("The value type '" + clazz.getName() + "' is not supported yet!");

return new NullTag();

}

}

java holder_Java DataHolder.supports方法代码示例相关推荐

  1. java kryo_Kryo框架使用方法代码示例

    Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo ...

  2. java readtimeout_Java HttpURLConnection.getReadTimeout方法代码示例

    import java.net.HttpURLConnection; //导入方法依赖的package包/类 /** * 得到响应对象 * * @param urlConnection * @retu ...

  3. java invalidate_Java Component.invalidate方法代码示例

    import java.awt.Component; //导入方法依赖的package包/类 /** Installs the component we will embed to display t ...

  4. java hasmoreelements_Java IOException.hasMoreElements方法代码示例

    import java.io.IOException; //导入方法依赖的package包/类 /** * fileName���� ���� package �������� ������ ���� ...

  5. java methode_Java Method.getTypeParameters方法代码示例

    import java.lang.reflect.Method; //导入方法依赖的package包/类 private void validateRuleMethod(MethodRuleDefin ...

  6. java setmethod_Java Operation.setJavaMethod方法代码示例

    import com.sun.tools.internal.ws.processor.model.Operation; //导入方法依赖的package包/类 private void createJ ...

  7. java cancel_Java RunnableFuture.cancel方法代码示例

    import java.util.concurrent.RunnableFuture; //导入方法依赖的package包/类 @Test public void testSnapshotAsyncC ...

  8. java getevent_Java ActionEvent.getWhen方法代码示例

    import java.awt.event.ActionEvent; //导入方法依赖的package包/类 @Override final public void actionPerformed(A ...

  9. java deepcopy_Java JsonNode.deepCopy方法代码示例

    import com.fasterxml.jackson.databind.JsonNode; //导入方法依赖的package包/类 /** * Applies this schema rule t ...

最新文章

  1. python函数中可变参数的传递方式是_Python中函数的参数传递与可变长参数
  2. webpack4--提取css到单独文件并且压缩css
  3. 找出两列表共有的元素python,两个列表之间的公共元素未在Python中使用集
  4. Ajax入门(创建 XMLHttpRequest 对象)
  5. Raft成员变更的工程实践
  6. python制作一个计时器_如何在python中创建一个反应计时器作为GUI?
  7. python标准库之smtplib,poplib,imaplib,smptd
  8. allegro中焊盘的设置
  9. 10月25日-10月29日一周宣讲会安排
  10. 安川控制器MP3300与C# 上位机通讯
  11. php进度台帐管理系统,捷雅途 - 工程量0号台账管理系统快速操作说明
  12. 如何生成serialVersionUID
  13. filtering_audio.c/filtering_video.c 解读
  14. 连玉君链接-Stata连享会
  15. Designing Machine Learning Systems with Python
  16. 第2章 HashMap集合
  17. 代码解放,一个智能化的「云控制台」如何运转?
  18. 假如给我三天光明(所有人都曾是小孩虽然只有少数人记得)
  19. 《网络安全2022:守望高质量》报告之数据安全热点事件与趋势解读
  20. Assertion failed: cond.is_weights() cond.weights().count() == 1 “If condition must be a initia

热门文章

  1. 小米mix2s html,【小米MIX2s评测】2018需要加价买的旗舰 小米MIX 2S评测_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
  2. 深入分析Android Binder 驱动
  3. Linux下Tomcat死活找不到JSP页面中import指定类的解决方法
  4. SQL笔试之远交近攻
  5. linux查询表空间脚本,通过Shell脚本查看数据库表空间使用情况
  6. Spark in action on Kubernetes - 存储篇(一)
  7. HDU1753 大明A+B
  8. Rayeager PX2支持opencv眼部识别demo展示
  9. 安卓 notification2
  10. 【转】Struts2 严重: Dispatcher initialization failed java.lang.RuntimeException