package ex; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Deque; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; public class PCAIL_Sample { PCAIL_Sample smpl; public void testBasicCase() { for (int i = 0; i < 10; i++) { PCAIL_Sample sample = new PCAIL_Sample(); URL u = sample.getClass().getResource("/foo"); } } public void fpPutField() { for (int i = 0; i < 10; i++) { PCAIL_Sample sample = new PCAIL_Sample(); URL u = sample.getClass().getResource("/foo"); if (i == 0) { smpl = sample; } } } public void fpTwoRegs() { for (int i = 0; i < 10; i++) { PCAIL_Sample sample = new PCAIL_Sample(); URL u = sample.getClass().getResource("/foo"); PCAIL_Sample s2 = sample; } } public PCAIL_Sample fpReturnAlloc() { for (int i = 0; i < 10; i++) { PCAIL_Sample sample = new PCAIL_Sample(); URL u = sample.getClass().getResource("/foo"); if (u != null) { return sample; } } return null; } public void fpMethodParm() { for (int i = 0; i < 10; i++) { PCAIL_Sample sample = new PCAIL_Sample(); if (sample.equals(sample)) { return; } } } public List<PCAIL_Sample> fpAnonymousMethodParm() { List<PCAIL_Sample> col = new ArrayList<>(); for (int i = 0; i < 10; i++) { col.add(new PCAIL_Sample()); } return col; } public List<PCAIL_Sample> fpAnonymousBuilder() { List<PCAIL_Sample> col = new ArrayList<>(); for (int i = 0; i < 10; i++) { col.add(new PCAIL_Sample().builder()); } return col; } public void fpArrayStore() { PCAIL_Sample[] samples = new PCAIL_Sample[3]; for (int i = 0; i < 3; i++) { samples[i] = new PCAIL_Sample(); } } public void fpThrow() { for (int i = 0; i < 3; i++) { if (i == 3) { throw new RuntimeException(); } } } public void fpTwoAssigns() { for (int i = 0; i < 10; i++) { Set<String> s; if ((i % 2) == 0) { s = new HashSet<>(); } else { s = new TreeSet<>(); } s.add(String.valueOf(i)); } } public void fpChaining() { List<Foo> list = new ArrayList<>(); for (int i = 0; i <= 10; i++) { list.add(new Foo().withNumber(i)); } } public List<String> fpPreUse() { List<String> l = null; while (true) { if (l != null) { return l; } l = new ArrayList<>(); l.add("Foo"); for (String s : l) { System.out.println(s); } } } public String fpSwitch(List<String> ss, int i) { for (String s : ss) { switch (i) { case 0: List<String> n = new ArrayList<>(); n.add(s); if (n.isEmpty()) { return "yup"; } break; case 1: return null; } } return null; } public void fpFooBar(List<Bar> barList) { List<Foo> fooList = new ArrayList<>(); Foo foo; for (Bar bar : barList) { foo = new Foo(); foo.setAny(bar.getAny()); fooList.add(foo); } } public void fpLambdaWithTernary(Deque<String> stack, Map<String, List<String>> details) { while (!stack.isEmpty()) { String s = stack.pop(); List<String> detail = details.get(s); detail = detail != null ? detail : new ArrayList<String>(); Collections.reverse(detail); detail.forEach(stack::push); } } private PCAIL_Sample builder() { return this; } static class Foo { public Foo withNumber(int i) { return this; } public void setAny(String s) { } } static class Bar { public String getAny() { return ""; } } }