Java中如何将创建对象、调用方法、存入集合的三步操作合并为单条语句?
Java中如何将创建对象、调用方法、存入集合的三步操作合并为单条语句?
嗨,我完全懂你的困扰——重复写「创建对象→调用方法→添加到集合」这三步,次数多了代码真的会又长又乱。下面给你几个实用的方案,帮你把这三步压缩成更简洁的写法:
方案一:封装工具方法(无需修改TestClass)
如果你没法改动TestClass的代码,那就在Implementation类里加一个小方法,把这三步逻辑包起来。以后每次只需要调用这个方法传参数就行:
class Implementation { TestClass t1; ArrayList<TestClass> listofClass = new ArrayList<TestClass>(); // 新增的工具方法,封装三步操作 private void addTestClass(String input) { TestClass t = new TestClass(); t.testMethod(input); listofClass.add(t); } void implementationMethod() { // 现在只需要一行搞定一次操作 addTestClass("hello"); addTestClass("bye"); // 后续再加N次也只需要重复调用这个方法 } }
这种方式最灵活,不管TestClass能不能改都能用,而且代码可读性也很强,别人一看就知道addTestClass是干啥的。
方案二:给TestClass加带参构造器(能修改TestClass时优先用)
如果你有权限修改TestClass,那可以给它加一个带String参数的构造器,在构造器里直接调用testMethod。这样创建对象的时候就能一步完成初始化和方法调用,然后直接添加到集合:
class TestClass { // 新增带参构造器 public TestClass(String input) { testMethod(input); } public void testMethod(String input) { // do some operations } } class Implementation { TestClass t1; ArrayList<TestClass> listofClass = new ArrayList<TestClass>(); void implementationMethod() { // 一行完成所有操作! listofClass.add(new TestClass("hello")); listofClass.add(new TestClass("bye")); } }
这种写法最清爽,完全把三步揉成了一行,代码干净利落。
方案三:用lambda+辅助方法(适合喜欢函数式风格的场景)
如果你想试试lambda的写法,也可以用一个返回TestClass的辅助方法,或者直接在调用时写匿名逻辑:
class Implementation { TestClass t1; ArrayList<TestClass> listofClass = new ArrayList<TestClass>(); // 辅助方法:接收输入,返回初始化好的TestClass private TestClass createTestClass(String input) { TestClass t = new TestClass(); t.testMethod(input); return t; } void implementationMethod() { // 一行完成添加 listofClass.add(createTestClass("hello")); // 直接用lambda写匿名逻辑(满足你对lambda的好奇) listofClass.add( ((Supplier<TestClass>) () -> { TestClass t = new TestClass(); t.testMethod("bye"); return t; }).get() ); } }
不过说实话,这种lambda的写法反而不如前两种简洁,除非你有特殊的函数式场景需求,不然还是前两种更实用。
备注:内容来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

