Skip to content

Instantly share code, notes, and snippets.

@alex-ber
alex-ber / test.java
Last active October 6, 2019 11:32
Test
public class MyDriver {
public static void main(String[] args){
System.out.println("Hello World!")
}
}
@alex-ber
alex-ber / enclosing_class.java
Last active October 6, 2019 14:01
Get enclosing class
static class Bar {
public static void main(String[] args) {
Class<?> cl=new Object(){}.getClass().getEnclosingClass();
System.out.println(cl==Bar.class); //will print true
}
}
@alex-ber
alex-ber / foo_methodname.java
Last active October 6, 2019 14:01
Currently executing method
public class SomeClass {
public void foo(){
class Local {};
String name = Local.class.getEnclosingMethod().getName();
}
}
@alex-ber
alex-ber / log.java
Last active October 6, 2019 14:44
Log defintion example
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SomeClass {
private static final Logger log = LoggerFactory.getLogger(new Object() {
}.getClass().getEnclosingClass());
public void foo(){
log.debug("foo()");
}
@alex-ber
alex-ber / local_log.java
Created October 6, 2019 14:44
Alternative log gefintion
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SomeClass {
private static final class Local {};
private static final Logger log = LoggerFactory.getLogger(Local.class.getEnclosingClass());
public void foo(){
log.debug("foo()");
}
@alex-ber
alex-ber / Log_preview.java
Last active October 11, 2019 11:25
Scary log definiton and usage
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SomeClass {
private static final Logger log = LoggerFactory.getLogger(new Object() {
}.getClass().getEnclosingClass());
public void foo(){
class Local {};
String name = Local.class.getEnclosingMethod().getName();
@alex-ber
alex-ber / Horse.java
Last active October 15, 2019 19:47
Horse
public class Horse extends Animal{
@Override
public void sound(){
System.out.println("Neigh");
}
}
public class Driver {
public static void main(String args[]){
Animal obj = new Horse();
obj.sound();
}
}
// changing the implementing object in run-time (normally done in compile time)
class C implements I {
private I i;
// forwarding
public C(I i){ this.i = i; }
public void f() { i.f(); }
}
public class Main {
public static void main(String[] arguments) {
C c = new C(new A());
c.f(); // output: A: doing f()
c = new C(new B());
c.f(); // output: B: doing f()
}
}