Skip to content

Instantly share code, notes, and snippets.

View peter-lawrey's full-sized avatar

Peter Lawrey peter-lawrey

View GitHub Profile
@peter-lawrey
peter-lawrey / AnnotationsWithCode.java
Created March 14, 2012 08:31
A way to associate code with an annotation
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Member;
/**
* @author peter.lawrey
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
public int value() default 0;
@peter-lawrey
peter-lawrey / AnnotationHandler.java
Created March 14, 2012 08:34
Interface for adding functionality to an annotation
import java.lang.reflect.Member;
/**
* @author peter.lawrey
*/
public interface AnnotationHandler<A> {
void process(Model model, Member member, A annotation);
}
@peter-lawrey
peter-lawrey / A.B.C.D.E.java
Created March 14, 2012 08:42
Nested types
public class A {
public interface B {
public enum C {;
public @interface D {
public class E {
// etc etc
}
}
}
}
@peter-lawrey
peter-lawrey / gist:4442523
Created January 3, 2013 10:40
A horrible hack to change a String.
import java.lang.reflect.Field;
class MainClass {
// requires Java 7 update 5+
static {
try {
Field value = String.class.getDeclaredField("value");
value.setAccessible(true);
value.set("B", value.get("ABC"));
} catch (Throwable e) {
package com.higherfrequencytrading.chronicle.example;
import com.higherfrequencytrading.chronicle.Chronicle;
import com.higherfrequencytrading.chronicle.Excerpt;
import com.higherfrequencytrading.chronicle.impl.IndexedChronicle;
import com.higherfrequencytrading.chronicle.tools.ChronicleTools;
/**
* @author Julien Eluard
* @author peter.lawrey
Index: src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java (revision 9f6a0e678ebfed5aa8d636886fae35be1cca092f)
+++ src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java (revision )
@@ -118,7 +118,7 @@
for (l = 0; l < achunksection.length; ++l) {
if (achunksection[l] != null && (!flag || !achunksection[l].isEmpty()) && (i & 1 << l) != 0) {
public static void main(String[] args) {
Stream.of(Boolean.class, Byte.class, Character.class, Short.class, Integer.class,
Long.class, Float.class, Double.class, Void.class).map(c -> {
try {
return c.getField("TYPE").get(null);
} catch (Exception e) {
throw new AssertionError(e);
}
}).forEach(System.out::println);
}
@peter-lawrey
peter-lawrey / A.java
Last active August 29, 2015 14:14
A program without class
/*
In Java 8 this program prints
java.lang.Throwable
at A.printStackTrace(A.java:8)
at A.<clinit>(A.java:5)
at java.lang.Class.forName0(Native Method)
Note: <clinit> is the static initializer method for interface A
*/
public class PingPongMain {
public static void main(String[] args) throws InterruptedException {
new Thread(() -> {
try {
synchronized ("bb") {
while (true) {
"bb".wait();
"bb".notifyAll();
System.out.println("b");
}
public class MemoryCopy {
private static final Unsafe UNSAFE;
static {
Unsafe unsafe = null;
try {
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
unsafe = (Unsafe) theUnsafe.get(null);
} catch (Exception ex) {