From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/examples/PrintableObject.java | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/examples/PrintableObject.java (limited to 'Master/Reference Architectures and Patterns/hjp5/examples/PrintableObject.java') diff --git a/Master/Reference Architectures and Patterns/hjp5/examples/PrintableObject.java b/Master/Reference Architectures and Patterns/hjp5/examples/PrintableObject.java new file mode 100644 index 0000000..63e8a5c --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/examples/PrintableObject.java @@ -0,0 +1,70 @@ +/* PrintableObject.java */ + +import java.lang.reflect.*; + +public class PrintableObject +{ + public String toString() + { + StringBuffer sb = new StringBuffer(200); + Class clazz = getClass(); + while (clazz != null) { + Field[] fields = clazz.getDeclaredFields(); + for (int i = 0; i < fields.length; ++i) { + sb.append(fields[i].getName() + " = "); + try { + Object obj = fields[i].get(this); + if (obj.getClass().isArray()) { + Object[] ar = (Object[])obj; + for (int j = 0; j < ar.length; ++j) { + sb.append(ar[j].toString() + " "); + } + sb.append("\n"); + } else { + sb.append(obj.toString() + "\n"); + } + } catch (IllegalAccessException e) { + sb.append(e.toString() + "\n"); + } + } + clazz = clazz.getSuperclass(); + } + return sb.toString(); + } + + public static void main(String[] args) + { + JavaProgrammer jim = new JavaProgrammer(); + jim.name = "Jim Miller"; + jim.department = "Operating Systems"; + jim.age = 32; + String[] langs = {"C", "Pascal", "PERL", "Java"}; + jim.languages = langs; + jim.linesofcode = 55000; + jim.jdk12 = true; + jim.swing = false; + System.out.println(jim); + } +} + +class Employee +extends PrintableObject +{ + public String name; + public String department; + public int age; +} + +class Programmer +extends Employee +{ + public String[] languages; + public int linesofcode; +} + +class JavaProgrammer +extends Programmer +{ + public boolean jdk12; + public boolean swing; +} \ No newline at end of file -- cgit v1.2.3