Java-JScience定义一个新单元

Java-JScience定义一个新单元,java,units-of-measurement,jscience,Java,Units Of Measurement,Jscience,我想在中定义一个新的distance unit。该项目网站的“教程”部分只介绍了Javadoc,虽然它相当完整,但对于我来说,有点过于密集,无法理解我如何定义自己的单元 你能举个例子吗 干杯 Pete也许关于Java中的units会有所帮助。我知道这是一篇老文章,但是。。不管怎么说,我都会把答案贴出来,也许对别人有用 为了在JScience中定义自定义单位,您必须扩展类SystemOfUnits,并在这里定义所有自定义单位 检查下面的示例(我正在定义英亩的单位) 公共类MyUnits扩展了Sys

我想在中定义一个新的distance unit。该项目网站的“教程”部分只介绍了Javadoc,虽然它相当完整,但对于我来说,有点过于密集,无法理解我如何定义自己的单元

你能举个例子吗

干杯


Pete

也许关于Java中的units会有所帮助。

我知道这是一篇老文章,但是。。不管怎么说,我都会把答案贴出来,也许对别人有用

为了在JScience中定义自定义单位,您必须扩展类
SystemOfUnits
,并在这里定义所有自定义单位

检查下面的示例(我正在定义英亩的单位)

公共类MyUnits扩展了SystemOfUnits
{
私有静态HashSet>getUnits()
{
返回集合。不可修改集合(单位);
}

私有静态请看看JSR363RI是如何做到这一点的(由JSScience 4实现的275的继承者)

SimpleUnitFormat的默认版本支持UTF-8,而ASCII适用于可能没有GUI或有限字符集的有限环境或设备:

DEFAULT.label(公制前缀.MICRO(单位:升),“µl”);
ASCII.标签(公制前缀.MICRO(单位.升),“MICRO”);


注意,label()方法将在下一个公开草案的候选版本中引入JSR 363 API。目前它是RI的一部分(,而不是JScience,尽管它可能最终也会在V5中迁移到新标准)

看起来没有太多人使用JScience。也许你必须编写教程。这对我没有帮助,因为没有关于如何添加新单元的明确信息。我也有同样的问题。我看了他们的文档,我认为我们需要的是(标签方法),但我不知道如何实现它。
public class MyUnits extends SystemOfUnits 
{
   private static HashSet<Unit<?>> UNITS = new HashSet();

   private static final MyUnits INSTANCE = new MyUnits();

   public static final Unit<Area> ACRE = myUnits((SI.METER.pow(2)).times(4046.8564224).asType(Area.class));

   public static MyUnits getInstance()
   {
      return INSTANCE;
   }    

   @Override
   public Set<Unit<?>> getUnits()
   {
      return Collections.unmodifiableSet(UNITS);
   }

   private static <U extends Unit<?>> U myUnits(U unit)
   {
      UNITS.add(unit);
      return unit;
   }
}