【问题标题】:Pass POJO in paramater在参数中传递 POJO
【发布时间】:2018-03-18 06:05:21
【问题描述】:

假设这是我的pojo:

public class POJOFoo{}
public class POJOFoo2{}

假设这是我的方法,我想使用相同的方法 显示 POJOFoo 和 POJOFoo2。

public void Foo(Object pojofoo/pojofoo2) {
    ObservableList<pojofoo/pojofoo2> observableDescriptions = 
         FXCollections.observableArrayList(new LinkedList<>());
}

我无法想象如何解决这种情况。感谢您的帮助。

【问题讨论】:

  • 你的问题不清楚
  • 您需要澄清您的问题,以便我们了解您想要实现什么以及您的问题是什么。到目前为止,您已经拒绝了有效的答案,并发表了一条毫无意义的评论。
  • 请再次检查是否有意义。
  • POJOFoo 和 POJOFoo2 完全不相关,您需要以某种方式将它们关联起来。这可以通过让它们都扩展相同的超类或实现相同的接口来完成。后者是首选方法。
  • 我不会在同一个方法中同时使用它们(POJOFoo,POJOFoo2)。我想做一个固定的,但将允许两个 POJO 都能够使用该方法。

标签: java methods parameters


【解决方案1】:

您可以在方法的签名中将参数pojofoo 的数据类型从Object 替换为POJOFoo

public void Foo(POJOFoo pojofoo) {
    ObservableList<POJOFoo> observableDescriptions = 
         FXCollections.observableArrayList(new LinkedList<>());
}

如果您想使用Generics 来允许该方法使用任何POJO,您可以将函数重写为-

public <T> void Foo(T pojofoo) {
    ObservableList<T> observableDescriptions = 
         FXCollections.observableArrayList(new LinkedList<>());
}

【讨论】:

  • 对不起,这个例子不清楚,但我的目标是想让它也可用于其他类的 pojo。
  • @KurtRuzell - 您可能希望使用涉及Generics 的方法来处理这种情况。检查更新的答案以获得更清晰的信息。
  • 哇!谢谢!但如果是这种情况呢? public static void test(TableColumn tc, Object obj, Object obj2 String str) { tc.setCellValueFactory((TableColumn.CellDataFeatures param1) -> new ReadOnlyStringWrapper(str)); }
  • @KurtRuzell - 它仍将遵循相同的方法 - public static &lt;T, U&gt; void test(TableColumn&lt;Object, String&gt; tc, T obj, U obj2 String str) { tc.setCellValueFactory((TableColumn.CellDataFeatures&lt;obj, obj2&gt; param1) -&gt; new ReadOnlyStringWrapper(str)); } 如果有其他问题不是原始问题,请为该问题创建一个新帖子,以维护社区礼仪。如果答案解决了原始问题,请将其标记为已接受。谢谢!
  • 谢谢先生!高度赞赏!你是当天的英雄!
【解决方案2】:

Kurt,在将对象作为参数传递时,将这个对象类型添加到方法中,如下所示:

public void Foo(POJOFoo pojofoo){
    ObservableList<POJOFoo> observableDescriptions = 
        FXCollections.observableArrayList(new LinkedList<>());
}

【讨论】:

  • 对不起,这个例子不清楚,但我的目标是想让它也可以重用于其他类的 pojo。
  • 如果您希望该方法采用任何对象,您可以指定 Object 的参数,就像您在问题中所做的那样。或者,如果您希望您的方法仅采用某些类型的对象,您可以指定它采用某个超类(例如,如果您有一个由 Dog、Cat 等扩展的 Animal 类),或者它采用某个接口(如 Map,则需要 HashMap、TreeMap 等)。否则请澄清您的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2012-01-22
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多