设置方法和返回getter的麻烦 [英] Trouble with setter method and returning getter

查看:79
本文介绍了设置方法和返回getter的麻烦的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个setter方法(setAvailForAssembly),该方法设置了assembledstocklevel,但是由于某种原因,我的条件似乎没有任何效果.为什么会这样?

I'm trying to make a setter method (setAvailForAssembly) that sets the assembledstocklevel but for some reason my if conditions don't seem to be making any effect. Why this is happening?

主班

    public class TestAssembledPart {
        public static void main(String args[]) {
            // Constructing two Part objects (the base parts)
            Part part0 = new Part("p101", "Crank", 218, 12.20);
            Part part1 = new Part("p102", "Pedal", 320, 14.30);
            // Constructing AssembledPart object assembled from p101 & p102        
            AssembledPart part2 = new AssembledPart("p183", "Crank & Pedal", 80, 3.50, part0, part1);
            // replenishing stock by 100 items        
            part2.replenish(100);
            System.out.println(part2);
            // Supplying the maximum possible assembled parts - combination         
            // of existing parts and base parts available for assembly         
            System.out.println("Supplying max number of (assembled) part");
            int totalAvail = part2.getStockLevel() + part2.getAvailForAssembly();
            System.out.println("part2 stocklevel: " + part2.getStockLevel() + " part2 available for assembly: " + part2.getAvailForAssembly());
            }
    }

装配零件类

    public class AssembledPart extends Part {

        private Part basica;
        private Part basicb;
        private int assembledstocklevel;

        public AssembledPart(String id, String name, int stocklevel, double unitprice,
        Part part0, Part part1) {

            super(id, name, stocklevel, unitprice);

            this.basica = part0;
            this.basicb = part1;
        }

        public void setAvailForAssembly() {
            if(basica.getStockLevel() >= basicb.getStockLevel()){
        assembledstocklevel = basica.getStockLevel();
            } else assembledstocklevel = basicb.getStockLevel();
        }

        public int getAvailForAssembly() {
            return assembledstocklevel;

        }

    }

零件类

    public class Part {

        protected int stocklevel;

        public Part(String id, String name, int stocklevel, double unitprice) {
            this.id = id;
            this.name = name;
            this.stocklevel = stocklevel;
            this.unitprice = unitprice;
        }

        public int getStockLevel() {
            return stocklevel - qty;
        }

        public void setStockLevel(int stocklevel) {
            this.stocklevel = stocklevel;
        }


    }

推荐答案

由于您的主方法,您只是忘了调用setAvailForAssembly()方法,这就是原因,由于校准gette方法而得到0.

Due to your main method, you just forget to call setAvailForAssembly() method, that is the reason, you are getting 0 as the result of caling gette method.

此外,getter和setter通常用于访问字段,并且不提供任何其他逻辑.在您的情况下,不带参数的setter方法将来可能会使某人感到困惑.只需将其命名为calculateAvailForAssembly或类似的名称即可.

Furthermore, getters and setters are usualy used to access fields and doesn't provide any additional logic. In your case, setter method without an argument, could possibly confuse someone in the future. Just call it like calculateAvailForAssembly or something like this.

这篇关于设置方法和返回getter的麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆