我试图将jodaTime中的一些方法作为常量

时间:2017-05-01 17:42:09

标签: java constants jodatime

我试图将jodaTime中的一些方法作为常量。这些是方法:

mysql_crawl.query('SELECT prod_name, full_price, discount_price, quantity, prod_link, images, prod_desc, status FROM `catalogsearch_fulltext` WHERE MATCH(data_index) AGAINST("cream") LIMIT 0 , 10', function(error, product_data){
res.render('result.html',{product_data: product_data})

我搜索了包和类,但我找不到访问这些方法的方法。

我想知道如何访问这些方法以将它们放入常量中,例如jodaTime.getMonthOfYear() jodaTime.getDayOfMonth() jodaTime.getYearOfCentury()

2 个答案:

答案 0 :(得分:0)

所以你试图存储应用程序启动时间的年,月和日?我想不出这种代码的任何其他用途。实施很简单;这是一些伪代码:

class MyClass {
    static final Object DAY_OF_MONTH;
    static {
        DateTime now = DateTime.now();
        DAY_OF_MONTH = now.getDayOfMonth();
    }
}

如果你想引用这些方法本身,你可以使用lambdas更像这样的东西:

class MyClass {
    static final Supplier<Integer> DAY_OF_MONTH;
    static {
        DateTime now = DateTime.now();
        DAY_OF_MONTH = now::getDayOfMonth;
    }
}

答案 1 :(得分:0)

假设您已定义DAY_OF_MONTHDAY_OF_YEAR,则可以将它们作为lambdas传递:

Map<Integer, Runnable> commands = new HashMap<>();
commands.put(DAY_OF_MONTH, () -> jodaTime.getDayOfMonth());
commands.put(DAY_OF_YEAR, () -> jodaTime.getDayOfYear());

OR

您可以在Method中保存Map并使用反射。

Map<Method, ValueIForgotSinceYouDeletedCode> map = new HashMap<>()