防止加载类直到加载某个类

时间:2017-04-30 12:18:11

标签: java class loading

标题说明了一切。我正在处理另一个项目(也就是使用Forge),我想把某个类(类1号)搁置 - 不加载它直到加载了另一个类(类2号)。然后在加载某个类(类2)之后,应该正常加载第一个类(类1)。

1 个答案:

答案 0 :(得分:0)

您可以在加载Class2时加载Class1 { public static void loadMe() {} } class2 { public Class2() { // Calling a dummy static member for loading the class Class1.loadMe(); } }

Class.forName("Class1");

优点是默认情况下两者都将由同一个ClassLoader加载。或者,你可以,

'use strict';

const redis = require('redis');
const config = require('../config');

const REDIS_EMPTY_VALUE = 'NOT_EXIST';
const MINUTE = 60;

const definedFunctions = [
    'hgetall', 'hexists', 'hmset', 'hmget', 'hkeys', 'hvals', 'hget', 'hset', 'hdel',
    'mget', 'mset', 'set', 'del', 'exists', 'lpush', 'lrange',
    'zrange', 'zrem', 'zadd', 'zrangebyscore', 'zrevrangebyscore',
    'expire', 'incrby'
];

let client = redis.createClient({
    host: config.get('REDIS_HOST'),
    port: config.get('REDIS_PORT')
});

client.on("error", function (err) {
    console.error('Redis Error: ' + err);
    throw new Error(err);
});

/**
 * Next are custom extensions for Redis module
 */

const custom = {
  emptyValue: REDIS_EMPTY_VALUE,
  minute: MINUTE
};

definedFunctions.map((fn) => {
  custom[fn] = (...args) => {
    return client[fn](args);
  };
});

custom.get = function(key, cb) {
    if (config.get('disable-cache') === 'true') return cb(null, null);
    return client.get(key, cb);
}

module.exports = custom;

在这两种情况下,整个应用程序中的任何人都不应该尝试访问此类的任何静态成员,否则它将被加载。