_AMDG_ icon

Uninitializer.java Open-Source (1.0 finally!)

_AMDG_ | PRO | 05/18/14 02:07:58 AM UTC | 0 ⭐ | 566 👁️ | Never ⏰ | []
Java |

3.68 KB

|

None

|

0 👍

/

0 👎

package game.objects;
 
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Date;
 
/**
 * Why have an uninitializer? Simple. For the same reason that you would
 * initialize the objects yourself! Recommended for use when exiting the game.
 *
 * @author Link_The_Programmer
 * @version 1.0
 */
public final class Uninitializer extends ClassLoader {
 
    private static final String version = "1.0";
    private static transient Exception e;
    private static transient int numOfObjects = 0;
    private static transient Date date = new Date();
 
    static {
        System.out.println("~Uninitializer.java version " + version);
        System.out.println();
    }
 
    public Uninitializer() {
    }
 
    //[Constructor]
    public Uninitializer(Object obj) {
        uninitialize(obj);
    }
 
    public Uninitializer(Object[] obj) throws NoSuchFieldException, Exception {
        int mill1;
        int mill2;
        System.out.println("--[" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ":" + System.currentTimeMillis() / date.getSeconds() + "] Uninitializing objects...");
        mill1 = (int) (System.currentTimeMillis() / date.getSeconds());
        uninitialize(obj);
        System.out.println("--[" + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + ":" + System.currentTimeMillis() / date.getSeconds() + "] Objects uninitialized. Total quantity: " + numOfObjects);
        mill2 = (int) (mill1 - System.currentTimeMillis() / date.getSeconds());
        System.out.println("--Time Elapsed: " + Math.abs(mill2) + " millisecond(s)");
        System.out.println();
        for (Object object : obj) {
            if (object == null) {
                System.err.println(e.getStackTrace()[e.getStackTrace().length - 1].getClassName() + ".Field" + Arrays.toString(e.getStackTrace()[e.getStackTrace().length - 1].getClassName().getBytes()) + "] never initialized or already uninitialized.");
            }
        }
    }
 
    //[/Constructor]
    private void uninitialize(Object obj) {
        try {
            obj = null;
        } catch (NullPointerException e) {
            System.err.println(e + ": This object is already null.");
        }
    }
 
    private synchronized void uninitialize(Object[] obj) throws ClassNotFoundException, NoSuchFieldException, Exception {
        if (obj != null) {
            try {
                throw new Exception();
            } catch (Exception e) {
                for (Object object : obj) {
                    uninitialize(object);
                    this.e = e;
                    if (object instanceof Field || object instanceof Class) {
                        if (object instanceof Field) {
                            Field.setAccessible((AccessibleObject[]) obj, true);
                            System.out.println(object + " uninitialized.");
                            numOfObjects += 1;
                            Field.setAccessible((AccessibleObject[]) obj, false);
                        } else {
                            System.out.println(((Class) object).getCanonicalName() + " uninitialized.");
                            numOfObjects += 1;
                        }
                    } else {
                        System.out.println(Initializer.getContainingClass(object) + ".Field"
                                + Arrays.toString(e.getStackTrace()[Initializer.getStackSize() - 1].getClassName().getBytes())
                                + "] initialized.");
                        numOfObjects += 1;
                    }
                }
            }
        }
    }
 
}

Comments