具有不同类型的方法头然后是参数

public class Album {


    private String albumtitle;

    private ArrayList<Photo> photos;


    /**

     * This constructor should initialize the

     * instance variables of the class.

     */

    public Album(String title) {


        this.albumtitle = title;

        photos = new ArrayList<>();


    }

问题是它一直说“.contains 有一个字符串”这在方法头类型和参数类型相同时有效。我必须以某种方式转换吗?


public Photo searchByTitle(String title) {

        for(Photo photo : photos) {

            if (photo.contains(title)){

               return photo;

            }

            return null;

        }


    }

简短的问题。谢谢


交互式爱情
浏览 125回答 2
2回答

慕标琳琳

为什么要检查照片中是否包含标题,标题是字符串类型,照片是不同类型。您不应该将照片的标题与给定的标题匹配吗?public Photo searchByTitle(String title) {&nbsp; &nbsp; for(Photo photo : photos) {&nbsp; &nbsp; &nbsp; &nbsp; if (photo.getTitle().equals(title)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return photo;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }}

慕田峪4524236

使用 Streams 的 Java 8+ 方法可能类似于:/**&nbsp;* Returns the first photo in the Album collection with the&nbsp;* specified title, or null if no Photo with the title is found.&nbsp;* @param title The title of the photo for which one should search&nbsp;*&nbsp;&nbsp;*/public Photo searchByTitle(String title){&nbsp; &nbsp; Optional<Photo> foundPhoto = photos.stream()&nbsp; &nbsp; &nbsp; .filter(p -> p.getTitle().equals(title))&nbsp; &nbsp; &nbsp; .findFirst();&nbsp; &nbsp; return foundPhoto.orElse(null);}这里的优点是它更多地关注所需的内容——找到匹配的标题——而不是循环结构。但是,它不一定是介绍性的 Java。但值得深思。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java